c++ - 为什么 LD_LIBRARY_PATH 无效?

标签 c++ c linux gcc libpng

我正在尝试编译 libpng,它需要 libz。我在家里安装了我的所有者 libz.so.1 并设置了 LD_LIBRARY_PATH。但它没有得到任何结果,因为 ldd 的输出> 表明它仍然使用 /usr/local/lib/libz.so.1

然后 make 的输出显示为“-L/home/zlib -lz”。为什么?

最佳答案

可能您需要一个从 /home/mylibs/libz.so/home/mylibs/libz.so.1 的符号链接(symbolic link)。

请注意,-lz 将搜索 libz.so,但不会搜索 libz.so.1,因此链接器将继续搜索并会在 /usr/local/lib 中找到这样的链接。

除此之外,您还想在可执行文件的 header 中显示 NEEDED 条目(记录动态依赖项),其中:

$ objdump -x a.out | grep NEEDED

查看它们是否记录了完整路径,如 libz.solibz.so.1

关于c++ - 为什么 LD_LIBRARY_PATH 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17654723/

相关文章:

c - 如何使用socket编程在c中找到客户端地址

linux - 如何在 linux 中删除列中的特定文本

C++0x "Hello Concurrent World"在 g++/linux 上立即出现段错误?

c++ - lxml._ElementTree.getpath(element) 返回 "*"而不是非默认 namespace 中元素的标签名称

c - 读写器:how could this code lead to deadlock

c - 为什么 int 在 c 或任何其他语言中占用 4 个字节?

linux - 一般保护的作用是什么?

c++ - 为什么即使是 16 字节对齐的地址也会导致 _mm_load_si128 导致访问冲突?

c++ - 将 Qt 与 WinForms 集成以使用某些类

c++ - 使用 C++ 的欧拉九号计划