2012-07-09 2 views
0

나는 (우분투에서) ICC와 CPP 코드를 컴파일하고 있습니다 :ICC 컴파일 된 코드없는 (libimf.so)

가 컴파일
icc -I/usr/share/R/include -I/~/Desktop/work/p1/geqw4/vi3/out/sp/ccode/eigen -fpic -O2 -pipe -c -DEIGEN_NO_DEBUG aha.cpp -o aha.o 

icc -shared -o aha.so aha.o -L/usr/local/lib/R/site -Wl,-rpath,/usr/local/lib/R/site -L/usr/lib64/R/lib -lR 

,하지만 난 얻을 실행 파일을 실행시 :

unable to load shared object '~/Desktop/work/p1/geqw4/vi3/out/sp/ccode/simcode/mine2/aha.so': 
    libimf.so: cannot open shared object file: No such file or directory 

libimf.so는/opt/intel/lib/intel64에 있습니다. 나는 지난번에 icc (1 년 전)를 사용한 동일한 문제인 을 실행 한 것을 기억하지만 해결책이 무엇인지를 기억하지 못합니다.

답변

1

확인 됨; 미래의 레코드에 대한

(내가 만약 그 정도, 일년에 한 번 ICC를 사용) :

다음

gedit ~/.bashrc 

다음

LD_LIBRARY_PATH=/opt/intel/lib/intel64 
export LD_LIBRARY_PATH 

를 수행합니다 ~/디렉토리에서 수행

source .bashrc 
3

링커에서/opt/intel/bin을 볼 수 있도록 라이브러리 경로를 업데이트해야합니다. (bin인지, lib인지는 확실합니까?) 시스템 변수를 LD_LIBRARY_PATH 환경 변수에 추가하거나 시스템 전체에 적용하려면 /etc/ld.so.conf에 추가 할 수 있습니다.

+0

감사합니다. 예, 잘못된 dir을 붙여 넣습니다 (지금 수정 됨). 나는 "LD_LIBRARY_PATH = $ LD_LIBRARY_PATH를 export :/opt/intel/lib/intel64"를 사용하지 않았다. 잊어 버린 다른 것이 있습니까? – user189035

1

인텔 컴파일러가 제공됩니다. 환경을 설정하는 다양한 셸 스크립트가 있습니다. 일반적으로, 당신이해야 할 모든 소스 하나의 스크립트입니다

source ${INTEL_COMPILER_DIR}/bin/compilervers.csh 

그리고 그것은 또한 당신이 (MKL, TBB, 등)을 가질 수있는 다른 제품에 대한 설정해야합니다.

1

icpc 또는 icc 링크가 실제로 필요하지 않은 많은 공유 라이브러리가 있습니다. 빌드 후에는 최종 빌드 파일 (실행 가능 또는 공유 라이브러리)에서 ldd -u -r을 실행하여 사용하지 않는 모든 라이브러리 종속성을 표시해야합니다. 당신이 libimf 사용하지 않는 것을 볼 경우이 옵션을 사용하여 실행 파일 또는 공유 라이브러리를 컴파일 할 수

-Wl,--as-needed 

그런 ldd -u -r를 다시 실행하고 종속성이 사라질 경우 참조하십시오.