SHLIB {utils} | R Documentation |
Build Shared Object/DLL for Dynamic Loading
Description
Compile the given source files and then link all specified object
files into a shared object aka DLL which can be loaded into R using
dyn.load
or library.dynam
.
Usage
R CMD SHLIB [options] [-o dllname] files
Arguments
files |
a list specifying the object files to be included in the shared object/DLL. You can also include the name of source files (for which the object files are automagically made from their sources) and library linking commands. |
dllname |
the full name of the shared object/DLL to be built, including the extension (typically ‘.so’ on Unix systems, and ‘.dll’ on Windows). If not given, the basename of the object/DLL is taken from the basename of the first file. |
options |
Further options to control the processing. Use
|
Details
R CMD SHLIB
is the mechanism used by INSTALL
to
compile source code in packages. It will generate suitable
compilation commands for C, C++, Objective C(++) and Fortran sources: Fortran
90/95 sources can also be used but it may not be possible to mix these
with other languages (on most platforms it is possible to mix with C,
but mixing with C++ rarely works).
Please consult section ‘Creating shared objects’ in the manual
‘Writing R Extensions’ for how to customize it (for example to
add cpp
flags and to add libraries to the link step) and for
details of some of its quirks.
Items in files
with extensions ‘.c’, ‘.cpp’,
‘.cc’, ‘.C’, ‘.f’, ‘.f90’, ‘.f95’, ‘.m’
(Objective-C), ‘.M’ and ‘.mm’ (Objective-C++) are regarded as source
files, and those with extension ‘.o’ as object files. All other
items are passed to the linker.
Objective C(++) support is optional when R was configured: their main usage is on macOS.
Note that the appropriate run-time libraries will be used when linking if C++, Fortran or Objective C(++) sources are supplied, but not for compiled object files from these languages.
Option -n (also known as --dry-run) will show the commands that would be run without actually executing them.
Note
Some binary distributions of R have SHLIB
in a separate
bundle, e.g., an R-devel
RPM.
See Also
COMPILE
,
dyn.load
, library.dynam
.
The ‘R Installation and Administration’ and ‘Writing R Extensions’ manuals, including the section on ‘Customizing package compilation’ in the former.
Examples
## Not run:
# To link against a library not on the system library paths:
R CMD SHLIB -o mylib.so a.f b.f -L/opt/acml3.5.0/gnu64/lib -lacml
## End(Not run)