R:由于缺少符号_omp_set_num_threads而无法加载data.table

时间:2017-10-10 22:35:52

标签: r data.table

我有一个包含导入列表的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,但得到的错误相同。对于我遗失的任何想法都有什么想法?

2 个答案:

答案 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标志以启用多线程。