나는 읽었다많은가이드에는 LD_LIBRARY_PATH
첫 번째 항목을 검색하라고 나와 있지만 내 .so 라이브러리 중 하나 libtdc++.so.6
가 /usr/lib64
.
ldd mylib.so:
...
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f82abd18000)
...
다음과 같은 다른 위치 mylib.so
에 연결 하고 싶습니다 .libstdc++.so.6
/apps/gcc_4.8.0/lib/libstdc++.so.6
/apps/gcc_4.8.0/lib
그래서 에 추가했습니다 LD_LIBRARY_PATH
.확실히거기에 있는데 /usr/lib64
아직 못 찾았어요.
내가 추가하면 :
setenv LD_PRELOAD /apps/gcc_4.8.0/lib/libstdc++.so.6
내 환경에는 더 이상 링커 오류가 없습니다. 예, 하지만 문제가 해결되지는 않습니다. 다운스트림 사용자는 이 라이브러리가 올바른 위치에 있을 것이라고 기대하지 않을 것입니다. 왜 LD_LIBRARY_PATH를 먼저 검색해야 할까요? ? !
답변1
이는 컴파일러 스위치와 함께 사용해야 합니다 Wl,--rpath=/apps/gcc_4.8.0/lib/libstdc++.so.6
.
고쳐 쓰다:새 로더도 필요한 경우 다음 컴파일러 스위치를 사용하세요.-Wl,--dynamic-linker=<path-to-the-new-dynamic-linker>