构建 R 包时如何链接到非标准库
How do I linking to a non-standard library when building an R package
我正在尝试构建 R openssl 程序包并将其link 构建为比系统范围 lib64 目录中的版本更新的 openssl 库。
Makevars 文件只有:
KG_CPPFLAGS=@cflags@
PKG_LIBS=@libs@
我可以通过在 configure
脚本中传递自定义库路径来指定我的本地库。但是当我发出 R CMD INSTALL
时,linking 命令以
开头
gcc -std=gnu99 -shared -L/usr/local/lib64 -o openssl.so [...objects...] -Lmy/path/here -lssl -lcrypto
因此,linker 找到了错误的库(/usr/local/lib64 中的库)而不是我的。
如何调整 linking 命令,使其在我的目录中查找库 first,而不是系统文件夹。
(背景:我没有root权限,这个旧版本的CentOS(5)不支持openssl v1,所以我自己构建了v1只是为了编译R包。但我被困在link由于 R CMD INSTALL 发生的任何魔法,正在进入阶段。)
我通过将参数传递给 R CMD INSTALL 解决了这个问题。即:
R CMD INSTALL . --configure-vars="INCLUDE_DIR=$HOME/local/include LIB_DIR=$HOME/local/lib64"
但这因包裹而异。没有通用的解决方案。
相反,阅读配置和 src/Makefile.in.
我正在尝试构建 R openssl 程序包并将其link 构建为比系统范围 lib64 目录中的版本更新的 openssl 库。 Makevars 文件只有:
KG_CPPFLAGS=@cflags@
PKG_LIBS=@libs@
我可以通过在 configure
脚本中传递自定义库路径来指定我的本地库。但是当我发出 R CMD INSTALL
时,linking 命令以
gcc -std=gnu99 -shared -L/usr/local/lib64 -o openssl.so [...objects...] -Lmy/path/here -lssl -lcrypto
因此,linker 找到了错误的库(/usr/local/lib64 中的库)而不是我的。
如何调整 linking 命令,使其在我的目录中查找库 first,而不是系统文件夹。
(背景:我没有root权限,这个旧版本的CentOS(5)不支持openssl v1,所以我自己构建了v1只是为了编译R包。但我被困在link由于 R CMD INSTALL 发生的任何魔法,正在进入阶段。)
我通过将参数传递给 R CMD INSTALL 解决了这个问题。即:
R CMD INSTALL . --configure-vars="INCLUDE_DIR=$HOME/local/include LIB_DIR=$HOME/local/lib64"
但这因包裹而异。没有通用的解决方案。 相反,阅读配置和 src/Makefile.in.