8

你可以在安装时在编译时设置 R 的 C 和 C++ 标志吗R CMD INSTALL(本质上,在这种特殊情况下,我想关闭编译器优化,但理想情况下有一个通用的解决方案)?

我知道您可以使用 影响某些选项--configure-args="...",我相当乐观地尝试过--configure-args="diable-optimization",但无济于事。同样,我也可以进行编辑$RHOME/etc/Makeconf,但这又不是我正在寻找的那种解决方案(并且在我没有相关的写权限的情况下是不可能的)。

我通过 autoconf 脚本和目录Makevars中的文件定义我的标志package/src,如果这有什么不同的话。

4

3 回答 3

8

Dirk - 非常有帮助的讨论(一如既往)并且明确地指出了我正确的方向。对于我的具体问题,事实证明除了Makevars我必须将参数传递给configure. 我不知道为什么会这样(并且阅读似乎不是常态,所以也许我在某处做错了什么),但如果其他人有同样的问题,~/.R/Makevars请结合以下论点configure/INSTALL为我工作。

R CMD INSTALL --configure-args="CFLAGS=-g CXXFLAGS=-g" package.tar.gz
于 2012-06-07T16:13:21.960 回答
6

是的,我为此使用了一个文件~/.R/Makevars。在切换 gcc 版本或切换到 llvm 或CC...CXX

于 2012-06-06T21:27:54.353 回答
2

我可以确认 Makevars 文件非常有用(特别是如果您需要使用“-L/my/libs”或“-I/my/includes”或其他构建标志)。

对于构建,如果要为站点/机器设置选项,还可以更改Makeconf文件 (/path/R/install/[lib64/R/]etc/Makeconf) 中的变量。

不过,如果你和我一样,以后在管理和使用库方面还有一些问题,你也可以使用ldpaths文件 [1] 来设置库。此文件包含 R 使用的 R_LD_LIBRARY_PATH。此变量等效于 unix [2] 上众所周知的 LD_LIBRARY_PATH。

我刚刚在这个文件(/path/R/install/[lib64/R/]etc/ldpaths)中添加了一些内容(就在MacOS / Darwin的评论之前):

if test -n "${LD_LIBRARY_PATH}"; then
  R_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${R_LD_LIBRARY_PATH}"
fi
## This is DYLD_FALLBACK_LIBRARY_PATH on Darwin (OS X) and

然后,您将能够动态地管理您的库,例如使用“环境模块”或“lmod”。

请注意,您可以使用该 config/etc 目录中的所有文件(Renviron、存储库、javaconf、Rprofile.site ...)更改许多其他环境和 R 变量。

[1] https://support.rstudio.com/hc/en-us/community/posts/200645248-Setting-up-LD-LIBRARY-PATH-for-a-rsession

[2] http://www.tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

于 2017-01-20T15:20:06.887 回答