Build Shared Object/DLL for Dynamic Loading

Compile the given source files and then link all specified object files into a shared object aka DLL which can be loaded into Rusing dyn.load or library.dynam.

R CMD SHLIB [options] [-o dllname] 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.
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.
Further options to control the processing. Use R CMD SHLIB --help for a current list. #ifdef windows The most useful one on Windows is -d to build a debug DLL. #endif

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 (ObjC), .M and .mm (ObjC++) 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 Rwas configured: their main usage is on OS X.

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 (also known as ) will show the commands that would be run without actually executing them. #ifdef windows

If there is an exports file dllname-win.def in the current directory it will be used, otherwise all entry points in object files (but not libraries) will be exported from the DLL. #endif


Some binary distributions of Rhave SHLIB in a separate bundle, e.g., an R-devel RPM.

See Also

#ifdef unix COMPILE, #endif dyn.load, library.dynam.

The R Installation and Administration and Writing R Extensions manuals, including the section on Customizing compilation in the former.

library(utils) # To link against a library not on the system library paths: Rcmd SHLIB -o my.dll a.f b.f -L/AMD/acml3.5.0/gnu32/lib -lacml
Documentation reproduced from package utils, version 3.3, License: Part of R 3.3

Community examples

Looks like there are no examples yet.