2016-07-04 3 views
0

내 C++ 프로그램을 컴파일 할 때 R 파일을 연결하고 있지만 Rcpp에는 libRcpp.so 파일이 없습니다.libRcpp.so 파일이 없으면 어떻게 Rcpp를 연결할 수 있습니까?

#include <R.h> 
#include <Rcpp.h> 
#include <RInside.h> 

**** some c++ code***** 

RInside R(argc, argv); 

    string cmd = "tmpf <- tempfile('nums');" 
       "png(tmpf);" 
       "counts <- table(a,b,c,d,e);" 
       "barplot(counts, main='My Plot', xlab='Letters');" 
       "dev.off();" 
       "tmpf"; 

    string tmpfile = R.parseEval(cmd); 

    cout << "Using plot " << tmpfile << endl; 
    unlink(tmpfile.c_str()); 

가 그럼 난 g 컴파일 ++와 같은 :

g++ -I/home/robert/R/x86_64-pc-linux-gnu-library/3.2/Rcpp/include 
-I/home/robert/R/x86_64-pc-linux-gnu-library/3.2/RInside/include 
-I/usr/share/R/include -L/usr/lib/R/lib -lR 
-L/home/robert/R/x86_64-pc-linux-gnu-library/3.2/Rcpp/libs -lRcpp 
-L/home/robert/R/x86_64-pc-linux-gnu-library/3.2/RInside/lib -lRInside 
Frequency-Analyzer.cpp 

오류가 읽

/usr/bin/ld: cannot find -lRcpp 
collect2: error: ld returned 1 exit status 
다음

(나는 ++은 C를 남겨 두었다)를 R 코드

-L/home/robert/R/x86_64-pc-linux-gnu-library/3.2/Rcpp/libs 은로 이어지지 않기 때문입니다."libRcpp.so" 파일 하지만 더 이상 링크를 지원하지 않으므로 내 디렉토리에 lib 파일이 없습니다. RInside를 사용하여 컴파일하려면 어떻게해야합니까 ??

+0

examples/디렉토리에 RInside에 포함 된 (GNU) Makefile을 사용하십시오. –

+0

감사합니다. 이것은 효과가 있었다. 덕분에 프로그램을 조금 더 잘 구축하는 방법을 이해할 수있었습니다. – Robe

+0

다행입니다. 아래 답변을 수락 해주십시오. –

답변

1

rinside_sample15.cpp과 비슷한 것을 사용하고있는 것 같습니다. 나는 쉽게 공급 사용하여 해당 을 구축하고 테스트 할 수 Makefile :

[email protected]:~/git/rinside/inst/examples/standard(master)$ make -f GNUmakefile 
    rinside_sample15 
ccache g++ -I/usr/share/R/include -I/usr/local/lib/R/site-library/Rcpp/include \ 
    -I/usr/local/lib/R/site-library/RInside/include \ 
    -g -O2 -fstack-protector-strong -Wformat -Werror=format-security \ 
    -Wdate-time -D_FORTIFY_SOURCE=2 -g -O3 -Wall -pipe -Wno-unused \ 
    -pedantic -Wall rinside_sample15.cpp -Wl,--export-dynamic \ 
    -fopenmp -L/usr/lib/R/lib -lR -lpcre -llzma -lbz2 -lz -lrt -ldl \ 
    -lm -lblas -llapack -L/usr/local/lib/R/site-library/RInside/lib \ 
    -lRInside -Wl,-rpath,/usr/local/lib/R/site-library/RInside/lib \ 
    -o rinside_sample15 
[email protected]:~/git/rinside/inst/examples/standard(master)$ 
[email protected]:~/git/rinside/inst/examples/standard(master)$ ./rinside_sample15 
Can now use plot in /tmp/xyplot56466f672e73.png 
[email protected]:~/git/rinside/inst/examples/standard(master)$ 

경로는 다를 것입니다, 당신은 ccache이 없을 수 있지만, 그것은 여전히 ​​작동합니다 - 또는 당신이 당신의 R 설치에 문제가 .

+0

제안 사항을 시도 할 때 다음 오류가 발생합니다. "/ usr/bin/ld : -llzma를 찾을 수 없습니다""collect2 : 오류 : ld가 1 종료 상태" "을 반환했습니다. *** [rinside_sample8] 오류 1 " – Robe

+0

해당 라이브러리에 대한 dev 패키지를 설치하십시오. –

관련 문제