R

R-package 컴파일 하기

hongiiv 2007. 12. 6. 18:00
반응형
모든 생물정보학을 하시는 분들의 제일 첫 질문은 R 설치되어 있습니까? 라는 질문이다. 가장 많이들 사용하시는 프로그램(?) 중 하나인데, 일반 X86에서는 문제가 없지만, Intel Itanium2나 IBM PowerPC의 64bit machine에서는 잘 컴파일된 것 같지만, 막상 테스트를 해보면 어이없게도 에러가 발생하곤 한다.

PPC64에서 rnorm(10^9)을 계산해보면 바로 메모리 관련 에러를 뱉으면서 계산하기 싫다는 에러를 내곤 계산을 포기하는 현상이 발생해 버렸다(cannot allocate vector length XXXXXKB). 여태 모르고 있었다니..ㅜㅜ 음~ 역시 구글링을 통해 R 메일링 리스트를 검색해보니 답이 나와 있더군요 ^^

It has been reported that using gcc 4.0.3 on `ppc64' needed the compiler flag -mminimal-toc to avoid errors when linking R as a shared library.

To build a 64-bit version of R on `ppc64' (also known as `powerpc64') with gcc 4.1.1, Ei-Ji Nakama used

     CC="gcc -m64"
     CXX="gxx -m64"
     F77="gfortran -m64"
     FC="gfortran -m64"
     CFLAGS="-mminimal-toc -fno-optimize-sibling-calls -g -O2"
     FFLAGS="-mminimal-toc -fno-optimize-sibling-calls -g -O2"

the additional flags being needed to problems linking against libnmath.a and when linking R as a shared library.

64비트 옵션을 주기 위해서 -m64 뿐만 아니라, 동적으로 링크 된 바이너리를 만들기 위해서는 -fPIC 플래그가 포함해야 하고, TOC 지원(8K 엔트리 보다 큼)은 -mminimal-toc 컴파일 플래그로 지정된 다중 TOC가 필요하다.

그래서 위의 내용을 기반으로 해서 ./configure를 실행할 때 다음과 같이 실행한다.

./configure --prefix=/usr/local/R CC="gcc -m64 -fPIC" F77="g77 -m64 -fPIC" CXX="gcc -m64 -fPIC" FC="g77 -m64-fPIC" CFLAGS="-mminimal-toc -fno-optimize-sibling-calls -g -O2" FFLAGS="-mminimal-toc -fno-optimize-sibling-calls -g -O2" --with-readline=no --with-x=no LDFLAGS="-L/lib64"

그다음은 make, make install 끝~
반응형