當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。