RPM (Yast 포함)을 통해 R을 설치했습니다.Linux에서 g ++로 RInside 프로그램 컴파일
[email protected]:~> locate RInside.so
/usr/lib64/R/library/RInside/lib/libRInside.so
/usr/lib64/R/library/RInside/libs/RInside.so
[email protected]:~> locate Rcpp.so
/usr/lib64/R/library/Rcpp/lib/libRcpp.so
/usr/lib64/R/library/Rcpp/libs/Rcpp.so
는
파일은 내가 컴파일 할 (rinsidetest.cpp
)를 포함
#include <RInside.h>
#include <Rcpp.h>
int main (int argc, char *argv[])
{
RInside R (argc, argv);
return 0;
}
다음
이다 내가 컴파일 방법 :
[email protected]:~> g++ rinsidetest.cpp -I /usr/lib64/R/library/RInside/include/ -I /usr/lib64/R/library/Rcpp/include/ -I /usr/lib64/R/include/ -L /usr/lib64/R/library/RInside/libs/ -L /usr/lib64/R/library/Rcpp/libs/
/tmp/ccUfdjgZ.o: In function `main':
rinsidetest.cpp:(.text+0xb7): undefined reference to `RInside::RInside(int, char const* const*, bool)'
rinsidetest.cpp:(.text+0xc8): undefined reference to `RInside::~RInside()'
collect2: ld returned 1 exit status
을
R 정보 :
> sessionInfo()
R version 2.15.1 (2012-06-22)
Platform: x86_64-unknown-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=C LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tcltk_2.15.1 tools_2.15.1
>
RInside
버전 : 0.2.6
Rcpp
버전 :
0.9.13
이 문제에 대한 해결 방법이 있습니까, 아니면이 RPM 설치를 제거하고 컴파일하여 모든 것을 시작 "해야" 근원에서? 그것이 나던 의미로
편집
[email protected]:~/Desktop/abc> g++ rinsidetest.cpp -I /usr/lib64/R/library/RInside/include/ -I /usr/lib64/R/library/Rcpp/include/ -I /usr/lib64/R/include/ -L /usr/lib64/R/library/RInside/lib/ -L /usr/lib64/R/library/Rcpp/lib/ -lRInside
[email protected]:~/Desktop/abc> ls
a.out rinsidetest.cpp
[email protected]:~/Desktop/abc> ./a.out
./a.out: error while loading shared libraries: libRInside.so: cannot open shared object file: No such file or directory
감사합니다. 덕분에 도움이되었습니다. 질문에 새 출력을 추가했습니다. 'a.out'을 실행하는 중에 오류가 발생했습니다. 아직 실종 된 부분이 무엇인지 말해 주시겠습니까? –
이것은 다른 문제입니다. 바이너리가 성공적으로 빌드되었지만 리눅스는 .so를로드 할 수 없다. 추가해야 할 경로 문제 일 수 있습니다. 나는이 문제에 대한 새로운 질문을 게시 하겠지만, C++ 커뮤니티가 더 커지면 r 태그 대신 C++ 태그를 추가하십시오. 나는 당신이 리눅스에 어떻게 파일을 로딩 하는지를 어떻게 말할 지 확신하지 못한다. 그러나 컴파일은 작동하지만 런타임 문제입니다.임시 해결책으로 lib 디렉토리를/usr/lib/디렉토리에 임시 솔루션으로 복사 해보십시오. exe가이 디렉토리 – mathematician1975
@AnishaKaul에서 픽업해야하거나, 바이너리는 – mathematician1975