我已经阅读了很多帖子,但我无法理解如何在 OS X 10.9.4 上编译 boost 库以便在我的应用程序中静态链接它。
我安装了 Xcode 5,还安装了“命令行工具”。
我已经下载了 boost 1.56.0 的 ZIP 压缩包, Bootstrap 是:
./bootstrap.sh --prefix=/Users/foo/dev/lib/boost_1_56_0 --libdir=/Users/foo/dev/lib/boost_1_56_0/lib
然后安装
./b2
但是当我尝试像下面这样编译一个小测试时:
#include <boost/log/trivial.hpp>
int main(int, char*[])
{
BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
return 0;
}
与:
clang logtest.cpp -I /Users/foo/lib/boost_1_56_0/include -L /Users/foo/lib/boost_1_56_0/lib
我在链接方面遇到了很多错误:
Undefined symbols for architecture x86_64:
"boost::log::v2s_mt_posix::record_view::public_data::destroy(boost::log::v2s_mt_posix::record_view::public_data const*)", referenced from:
boost::log::v2s_mt_posix::record::reset() in logtest-d5345b.o
...
所以我也尝试在bootstrap中加入如下参数:
cxxflags="-arch i386 -arch x86_64" address-model=32_64 threading=multi macos-version=10.9 stage
以及 b2 的以下内容:
threading=multi link=static runtime-link=static cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++"
但是什么都没有改变...
所以我正在寻找一个指南,教我如何从头开始编译 boost 库,以及如何编译链接它的应用程序。
最佳答案
在您的构建命令中,您指定了链接目录,但没有指定您将可执行文件链接到的库。将 -llibrary-name
添加到命令中。我认为应该是
clang logtest.cpp -I /Users/foo/lib/boost_1_56_0/include -L /Users/foo/lib/boost_1_56_0/lib -lboost_log
也许,添加其他库 boost_log
依赖(boost_log_setup
和 pthread
是很好的候选者)。
有关链接 boost 库的更多信息,请参阅 boost documentation .
关于c++ - 在 OS X 10.9 上编译 Boost 并链接到自己的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25467378/