我有一个包含导入列表的R包,从来没有遇到加载最新版本的问题。我刚刚将set
添加到列表中,现在无法加载包。
操作系统:macOS Sierra 10.12.5 / 6
gcc :
data.table
进口
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.0.0 (clang-900.0.37)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
错误
aws.s3,
data.table,
googledrive,
httr,
jsonlite,
lubridate,
plyr
RMixpanel,
rmongodb,
RPresto,
stringi,
stringr,
uuid
我还尝试将openmp-utils.c:50:5: warning: implicit declaration of function 'omp_set_num_threads' is invalid in C99 [-Wimplicit-function-declaration]
omp_set_num_threads(1);
^
1 warning generated.
...
Error: package or namespace load failed for ‘data.table’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/usr/local/lib/R/3.4/site-library/data.table/libs/datatable.so':
dlopen(/usr/local/lib/R/3.4/site-library/data.table/libs/datatable.so, 6): Symbol not found: _omp_set_num_threads
Referenced from: /usr/local/lib/R/3.4/site-library/data.table/libs/datatable.so
Expected in: flat namespace in /usr/local/lib/R/3.4/site-library/data.table/libs/datatable.so
Error: loading failed
移动到高于plyr
,但得到的错误相同。对于我遗失的任何想法都有什么想法?
答案 0 :(得分:3)
我修正了我的错误并将1.10.4-2推到了CRAN。
- MacOS上的OpenMP现在由CRAN支持,并包含在CRAN的Mac二进制包中。但是,在编译时未启用OpenMP #2409时,在MacOS上从源安装v1.10.4-1失败。感谢Liz Macfie和@fupangpangpang的报道。未启用OpenMP时的启动消息已更新。
我已经在发布程序中添加了额外的步骤,以防止将来发生这种情况。
答案 1 :(得分:2)
昨天我遇到了同样的问题,经过一些谷歌搜索后,我设法通过指定〜。/ R / Makevars来安装data.table
。
在我的情况下,我使用 macports 并安装了gcc7。 gcc-mp-7和g ++ - mp-7
引用 macports 下的内容因此,要指定编译器使用这些而不是macOS上的默认clang,您需要创建一个文件〜。/ R / Makevars。然后添加以下行:
CC = gcc-mp-7 -fopenmp
CXX = g ++ - mp-7 -fopenmp
您还应该能够对clang
的较新版本执行相同操作,只需将gcc-mp-7
更改为clang-omp
(或根据其安装位置等效的内容)和不要忘记相同的-fopenmp
标志以启用多线程。