我正在尝试编译 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.so
或 libz.so.1
。
关于c++ - 为什么 LD_LIBRARY_PATH 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17654723/