LD_LIBRARY_PATH에 so 파일이 있고 지정도 했는데 실행이 안되네

aw2310의 이미지

상황을 말씀드리면...

다른 사람이 만들어 놓은 Makefile 가지고 프로젝트 소스를
컴파일 하는데요..

Makefile 중에서 어떤 프로그램을 실행시키도록 되어 있습니다.

그 프로그램이 동작하기 위해서는 libTAO_IDL.so.5.4.2 라는
공유 오브젝트 파일이 필요합니다..

이 파일이 있는 경로를 export LD_LIBRARY_PATH=경로 해서 지정을 해 줬거든요
echo $LD_LIBRARY_PATH를 하면 경로가 잘 지정되어 있고요..

또, 제가 실제로 그 프로그램을 쉘상에서 실행시켜봐도 잘
실행이 됩니다.

그런데.. Makefile로 실행하게끔해서 make를 돌리면..


Compiling IDL source
/usr/local/ACE_wrappers/TAO/TAO_IDL/tao_idl: error while loading shared libraries : libTAO_IDL_BE.so.5.4.2: cannot open shard object file : No such file or directory

라고 나옵니다.

다시 정리를 해보면 /usr/local/ACE_wrappers/TAO/TAO_IDL/tao_idl를 실행시키기 위해서는 libTAO_IDL_BE.so.5.4.2 파일이 필요하거든요.

export LD_LIBRARY_PATH=경로 로 지정을 했는데 못찼는다고
위의 에러메시지 처럼 나오고요.. 이상한건 내가 쉘에서 직접
/usr/local/ACE_wrappers/TAO/TAO_IDL/tao_idl를 치면 위와같은
에러 메시지 없이 잘 실행된다는 것입니다.

'쉘변수와 환경변수의 차이'라는 건가요?

도대체 제가 뭘 잘못한거죠?

에코 명령어 치면 다음과 같이 나옵니다.

echo $LD_LIBRARY_PATH
/usr/local/ACE_wrappers/ace:/usr/local/ACE_wrappers/lib:/usr/local/ACE_wrappers/ace:/usr/local/ACE_wrappers/lib:

음.. 제가 뭘 잘못한건지.. 고수님들의 조언 기다립니다.

liberta의 이미지

Makefile에서 어떤 방식으로 그 프로그램을 실행시키는지요? (해당 라인..)

그런데 대략 상황을 보아하니, 혹시 root 권한이 있으시면 다음과 같이 하시는게 가장 맘편하실 듯 합니다.

$ vi /etc/ld.so.conf
(실행시킬 /usr/local..어쩌고 경로를 추가)
$ ldconfig

:)