【发布时间】:2017-03-10 15:04:04
【问题描述】:
我的构建系统在此路径中安装了 libtiff:
/usr/lib/x86_64-linux-gnu/libtiff.so.5.2.4
我已经在本地路径中构建了一个自定义 libtiff:
/home/user/libtiff/usr/local/lib/libtiff.so.3.8.2
我想构建一个与安装在本地路径上的 libtiff 链接的二进制文件。为此,我使用以下命令:
cc -o binary \
obj1.o ... objn.o \
-L /home/user/libtiff/usr/local/lib/ \
-Wl,-rpath,L/home/user/libtiff/usr/local/lib/ \
-ltiff
问题是在链接并生成二进制文件后,ldd显示二进制文件不是使用本地libtiff,而是安装在构建系统上的库:
$ ldd binary | grep libtiff
libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007fbaf9ad6000)
我不明白为什么链接器不使用本地库。
我已经阅读了一些有关设置 LD_LIBRARY_PATH、LD_PRELOAD 或 LIBRARY_PATH 的相关帖子,但它们都没有按预期工作。
修改 /etc/ld.so.conf 不是一个好的选择。
【问题讨论】:
标签: gcc shared-libraries ld libtiff