본문 바로가기

[Rcpp] building shared library 문제 해결: 환경변수 추가

R Programming/Rcpp by Mandarim_ 2023. 10. 26.

Rcpp 코드를 사용하고, 이를 여러 코어에 할당하여 병렬처리로 분석할 때,

사용하는 PC 환경에 따라 글의 제목과 같은 에러가 발생할 수 있다.

일반적으로 병렬처리가 아닌, 그냥 Rcpp코드를 불러올 때 해당 문제가 발생하지 않는다.

 

본 게시글은 해당 문제의 원인을 알아보고 해결하는 방법에 대해 알아본다.

본 게시글은 Rtools40 기준으로 작성되었다.


원인

Rtools 설치는 제대로 하였으나, Rtools의 정보들이 시스템 환경변수로 설정되지 않아서 발생하는 문제이다.

환경변수란, OS에서 기본적으로 필요로 하는 환경설정과 관련된 정보를 담고 있다.

 

메인 세션에서는 굳이 따로 설정하지 않아도 이를 인식하므로 문제가 발생하지 않았던 것 같다.

병렬처리를 위한 서브세션에서 Rtools를 인식하지 못하기 때문에 발생하는 문제로 파악된다.

 

(updaeted) 그 외로 Rcpp 코드 자체에 오류가 있는데 해당 코드를 source()하였을 때에도 해당 에러가 발생하니, 코드 오류 먼저 점검하는게 좋다.

해결방법

이는 해결하는 방법이 간단하다.

 

실제로 여러 설정창에 들어가서 해당 파일을 추가해도 되지만 R에서 코드 한 줄로 간단히 해결할 수 있기 때문이다.

R에서 아래 코드를 실행하여 Rtools의 bin 폴더를 환경변수로 설정할 수 있다.

Sys.setenv(PATH="%PATH%;C:/rtools40/usr/bin")

물론 설정하는 path는 과거에 개인이 rtools를 어디에 설치하였느냐에 따라 다를 수 있으니,

미리 bin 파일의 위치를 확인하고 코드를 실행하자.

Rtools40 속의 bin 풀더의 위치를 확인함.
rtools40 > usr > bin의 환경설정 파일들

 

참고 링크

본 게시글은 아래의 링크들을 참고하여 문제를 해결한 과정을 기록하였다.

반응형