使用 libtool 链接到非 libtool 库

Using libtool to link against non-libtool libraries

本文关键字:libtool 链接 使用      更新时间:2023-10-16

我有一个使用autotools设置的项目来构建一个C++库,包括Boost.Python的Python绑定。我的系统上有一个 Boost.Python 的二进制文件,我想链接到它:

/usr/lib/libboost_python-py27.so.1.49.0

没有相应的 .la 文件,所以我想我可以将库的完整路径添加到 libtool 命令中,如下所示:

bash ./libtool --mode=link g++ -rpath /usr/local/lib src/o1.lo src/o2.lo ... 
     /usr/lib/libboost_python-py27.so.1.49.0 -o libNSM.la

但是libtool从发出的g++命令中丢弃了/usr/lib/libboost_python-py27.so.1.49.0。如果我手动运行 g++,它可以正常工作。

如何使libtool使用本机共享库,或者处理这种情况的正确方法是什么。我绝对希望用户能够使用他们现有的提升二进制文件。

我的系统上有一个 Boost.Python 的二进制文件,我想链接到它

您是否安装了boost-devel以安装指向/usr/lib/libboost_python-py27.so.1.49.0的符号链接?

没有相应的 .la 文件

libtool不需要链接。 如果安装了boost-devel-lboost_python-py27可能就足够了。

如何使libtool使用本机共享库,或者处理这种情况的正确方法是什么。我绝对希望用户能够使用他们现有的提升二进制文件。

您可能想查看 GNU Autoconf 存档中的AX_BOOST_PYTHON宏以帮助用户为libboost_python设置所需的库(您可能需要的不仅仅是那里的特定宏)。 boost.m4宏似乎也支持python,并且应该提供类似的东西。