2017-10-10 1 views
4

가져 오기 목록이있는 R 패키지가 있으며 최신 버전을로드하는 데 문제가 없었습니다. 방금 data.table을 목록에 추가 했으므로 패키지를로드 할 수 없습니다.R : 누락 된 기호로 인해 data.table을로드 할 수 없습니다. _omp_set_num_threads

OS : 맥 OS 시에라 10.12.5/6

GCC :

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 

오류

01,235,
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 

나는 또한 data.table보다 높은 숫자로 plyr을 움직이려고했지만 같은 오류가 발생했습니다. 내가 놓친 것에 대한 아이디어가 있습니까?

+0

어제 CRAN에있는 1.10.4-1로 업그레이드하셨습니까? 신선한 R 세션에서'test.data.table()'이 작동합니까? 설치/업그레이드 문제로 의심됩니다. –

+0

'parallel' 패키지를 사용하여 포크 할 때이 라인이 호출됩니다. '병렬 '패키지를 사용하고 있습니까? 이 패치에서 내가 변경 한 부분이기 때문에 책임이 있습니다. 설치시 openMP가 있는지 확인하기 위해 전체 설치 출력을 볼 수 있습니까? –

+3

지금 봅니다. 내 잘못.OpenMP를 사용할 수 없을 때 #ifdef에있는 호출을 포장하지 않았습니다. 테스트하기 위해 OpenMP를 제거해야하기 때문에 이런 것들을 테스트하기가 어렵습니다. –

답변

2

실수를 수정하고 1.10.4-2를 CRAN (으)로 푸시했습니다. 맥 OS에

  • OpenMP는 지금 CRAN 지원 및 Mac 용 크랑의 패키지 바이너리에 포함되어 있습니다. 그러나 MacOS에서 소스에서 v1.10.4-1을 설치하는 것은 컴파일시에 OpenMP가 활성화되어 있지 않으면 실패했습니다. #2409. 보고를 한 Liz Macfie와 @fupangpangpang에게 감사드립니다. OpenMP가 사용 가능하지 않을 때 시작 메시지가 갱신되었습니다.

향후 이러한 상황을 방지하기 위해 출시 절차에 추가 단계를 추가했습니다.

1

나는 어제 같은 문제가 있었고 일부 인터넷 검색을 한 후에 ~/R/Makevars를 지정하여 data.table을 설치했습니다.

저는 제 경우에 macports을 사용하고 gcc7을 설치했습니다. ~ MP-7 그래서

대신 파일을 만들 필요가 맥 OS의 기본 그 소리의 이러한를 사용하는 컴파일러를 지정하려면/R/Makevars - MacPorts를에서 어느 GCC-MP-7에 의해 참조되며, g ++는. . 그런 다음 줄을 추가합니다

CC = gcc가-MP-7 -fopenmp
을 CXX = g ++ - MP-7 -fopenmp

것은 또한 최신 버전과 동일한 기능을 수행 할 수 있어야한다 clang의 경우 gcc-mp-7clang-omp (또는 설치된 위치에 따라 다른 값)으로 변경하고 멀티 스레딩을 사용하려면 동일한 -fopenmp 플래그를 잊지 마세요.

+2

[지침] (https://github.com/Rdatatable/data.table/wiki/Installation#openmp-enabled-compiler-for-mac)을 따르십시오. –

관련 문제