Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试编译libpng,这需要libz. 我已经在我家安装了我的所有者libz.so.1并设置了LD_LIBRARY_PATH。但它没有得到任何结果,因为它的输出ldd显示它仍在使用/usr/local/lib/libz.so.1。
libpng
libz
libz.so.1
LD_LIBRARY_PATH
ldd
/usr/local/lib/libz.so.1
然后 make 的输出显示如“-L/home/zlib -lz”。为什么?
可能您需要一个从/home/mylibs/libz.soto的符号链接/home/mylibs/libz.so.1。
/home/mylibs/libz.so
/home/mylibs/libz.so.1
请注意,它-lz会搜索libz.so,但不会libz.so.1,因此链接器将继续搜索并会在/usr/local/lib.
-lz
libz.so
/usr/local/lib
除此之外,您还希望在可执行文件的标头中显示 NEEDED 条目(记录动态依赖项),其中:
$ objdump -x a.out | grep NEEDED
查看它们是否以完整路径记录, aslibz.so或 as libz.so.1。