当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R SHLIB 构建动态加载的共享对象/DLL


R语言 SHLIB 位于 utils 包(package)。

说明

编译给定的源文件,然后将所有指定的目标文件链接到一个共享对象(又名 DLL)中,该共享对象可以加载到R使用dyn.load或者library.dynam.

用法

R CMD SHLIB [options] [-o dllname] files

参数

files

指定要包含在共享对象/DLL 中的对象文件的列表。您还可以包含源文件的名称(目标文件是根据其源自动创建的)和库链接命令。

dllname

要构建的共享对象/DLL 的全名,包括扩展名(通常为“。所以' 在 Unix 系统上,以及 '.dll’在 Windows 上)。如果未给出,则对象/DLL 的基本名称取自第一个文件的基本名称。

options

控制处理的更多选项。使用 R CMD SHLIB --help 作为当前列表。

细节

R CMD SHLIBINSTALL 用于编译包中源代码的机制。它将为 C、C++、Objective C(++) 和 Fortran 源代码生成合适的编译命令:也可以使用 Fortran 90/95 源代码,但可能无法将它们与其他语言混合使用(在大多数平台上,可以与 C 混合,但与 C++ 混合很少起作用)。

请参阅手册“编写 R 扩展”中的“创建共享对象”部分,了解如何自定义它(例如添加 cpp 标志并将库添加到链接步骤)以及其一些怪癖的详细信息。

项目在files带有扩展名‘。C', '.cpp', '.cc', '。C', '。F', '.f90', '.f95', '.米’ (ObjC), ‘.M' 和 '。毫米' (ObjC++) 被视为源文件,扩展名为 '.o’作为目标文件。所有其他项目都传递给链接器。

Objective C(++) 支持是可选的R已配置:它们的主要用途是在 macOS 上。

请注意,如果提供了 C++、Fortran 或 Objective C(++) 源,则在链接时将使用适当的运行时库,但不适用于从这些语言编译的目标文件。

选项-n(也称为--dry-run)将显示将运行但未实际执行的命令。

注意

一些二进制发行版RSHLIB在一个单独的包中,例如R-devel转速。

例子

## 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)

也可以看看

COMPILEdyn.loadlibrary.dynam

“R 安装和管理”和“编写 R 扩展”手册,包括前者中的“自定义编译”部分。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Build Shared Object/DLL for Dynamic Loading。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。