A使用GNU autotools进行项目构建。现在我进行了一些微小的更改,只想从整个集合中复制一个单独的库 libmylib.so
和一个程序 myprog.x
(使用该库)
我不想使用make install
,因为我必须非常小心,不要覆盖所有其他内容。
当我这样做时
ldd .libs/myprog.x
我看到使用的库是 - 按预期 - 是新建的库而不是/usr/lib/
中的库。
$ ldd .libs/myprog.x
libmylib.so.0 => /home/user/project/.libs/libmylib.so.0 (0x003bb000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00f57000)
libc.so.6 => /lib/tls/libc.so.6 (0x00948000)
libz.so.1 => /usr/lib/libz.so.1 (0x0024e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00ee7000)
如何告诉make
或libtool
重新链接 myprog.x
,以便我可以手动将其复制到/usr/bin/
?当然,将libmylib.so
复制到/usr/lib/
。
答案 0 :(得分:1)
(我通过运行make -n install | less
来解决这个问题。)
您可能希望使用libtool安装库和程序(如果它使用libtool链接),请尝试类似:
sudo ./libtool --mode=install /usr/bin/install -c libmylib.la /usr/lib
sudo ./libtool --mode=install /usr/bin/install -c myprog.x /usr/bin
Libtool可能会要求您运行./libtool --mode=finish
命令。我相信它的建议。在执行任何此操作之前,我将使用--dry-run
选项运行命令,而不使用sudo
来查看将要发生的具体操作。
请注意,我没有运行系统libtool
,而是运行configure
脚本创建的系统。