링커가 비표준 디렉터리에서 stdc++ 라이브러리를 찾도록 강제합니다.

링커가 비표준 디렉터리에서 stdc++ 라이브러리를 찾도록 강제합니다.

나는 읽었다많은가이드에는 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>

관련 정보