c - R CMD SHLIB 编译 C 代码时出错

标签 c r cmd

我正在尝试将 R CMD SHLIB 用于使用 LapackBlas 编写的 C 程序。我在 Windows 中使用命令提示符。但它似乎无法链接到外部库。如何链接这些库?

D:\R\testR>Rcmd SHLIB fmpc.c
c:/Rtools/mingw_64/bin/gcc -shared -s -static-libgcc -o fmpc.dll tmp.def fmpc.o
-Ld:/Compiler/gcc-4.9.3/local330/lib/x64 -Ld:/Compiler/gcc-4.9.3/local330/lib -L
D:/R/R-3.3.2/bin/x64 -lR
fmpc.o:fmpc.c:(.text+0x76d): undefined reference to `dposv_'
fmpc.o:fmpc.c:(.text+0x800): undefined reference to `dtrtrs_'
fmpc.o:fmpc.c:(.text+0x83b): undefined reference to `dtrtrs_'
fmpc.o:fmpc.c:(.text+0x92f): undefined reference to `dposv_'
fmpc.o:fmpc.c:(.text+0x9bf): undefined reference to `dtrtrs_'
fmpc.o:fmpc.c:(.text+0x9fa): undefined reference to `dtrtrs_'
fmpc.o:fmpc.c:(.text+0xb19): undefined reference to `dgemm_'

最佳答案

您有一个链接器 错误,而不是编译器 错误。编译步骤顺利通过。

解决方案:告诉 R 链接到丢失的库,大多数方法是添加一个包含以下内容的文件 src/Makevars.win:

PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)

它是使用 R 知道的其他变量的变量声明。

关于c - R CMD SHLIB 编译 C 代码时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42118561/

相关文章:

r - 如何防止我的打包函数被 ls() 列出?

windows - 如何使批处理文件通过新的Windows终端运行?

复制文件跳过前 n 行和后 m 行

c - 这是按升序排列给定数字的代码。但是当我在 Codechef 中提交它时,它给出了运行时(SIGSEGV)错误?

C 线程程序

r - Shiny 的 slider - 检索值 - 列表,或者..?

r - 为所有列 data.table 按组选择最后一行

c# - 如何获取 BAT 文件的输出并将其保存为字符串

windows - PyCharm "Can' t 打开本地终端""Failed to start cmd.exe"?

c - 使用 NtCreateKey/NtOpenKey 获取 key 句柄