1

A 有一个使用 GNU 自动工具构建的项目。现在我有一个微小的变化,只想从整个集合中复制一个库 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)

我怎样才能告诉makelibtool重新链接 myprog.x,以便我可以手动将其复制到/usr/bin/?当然是复制libmylib.so到之后/usr/lib/

4

1 回答 1

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脚本创建的系统。

于 2012-07-26T00:32:54.143 回答