【发布时间】:2009-09-16 02:44:55
【问题描述】:
我正在尝试创建一个共享对象 (.so),通过在 -lboost 中包含一个共享对象,我会隐式包含所有 boost 库。这是我尝试过的:
#!/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 需要 libboost_filesystem-gcc43-mt-1_38.so.1.38.0 需要 /boot/develop/lib/x86/libstdc++.so 需要 libroot.so (请注意,我正在运行 Haiku)