我读了很多指导说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!?!