我想创建一个共享对象(.so),通过包含一个共享对象-lboost
,我隐式地包含所有的提升库。下面是我的尝试:创建虚拟共享对象(.so),以依赖于其他共享对象
#!/bin/sh
BOOST_LIBS="-lboost_date_time-gcc43-mt -lboost_filesystem-gcc43-mt"
#truncated for brevity
g++ $BOOST_LIBS -shared -Wl,-soname,libboost.so.1 -o libboost.so.1.0
ln -si libboost.so.1.0 libboost.so.1
ln -si libboost.so.1 libboost.so
把所有3个的文件(libboost.so libboost.so.1 libboost.so.1.0)在同一个目录中的所有Boost库后,我试图编译一个测试程序和它(这取决于-lboost_date_time-gcc43-mt
):
g++ -lboost test.cpp
这样做,我得到了同样的未定义的引用信息为不具有-lboost。有-lboost_date_time-gcc43-mt works
,但这太罗嗦:)我怎么得到-lboost自动引入其他共享库?
更新:运行objdump -x libboost.so | grep的NEEDED给出了这样的: 的必需libboost_date_time-gcc43-MT-1_38.so.1.38.0 NEEDED libboost_filesystem-gcc43-MT-1_38.so.1.38.0 的必需/boot/develop/lib/x86/libstdc++.so 需要libroot。所以 (注意,我正在运行Haiku) – 2009-09-16 03:07:42