我正在使用 OSX Mountain Lion。我刚刚使用 boost 网站提供的说明下载、解压缩并构建了 boost 1.52.0:http: //www.boost.org/doc/libs/1_52_0/more/getting_started/unix-variants.html。我将默认的安装前缀保留在/usr/local
,这意味着库安装在/usr/local/lib
,头文件在/usr/local/include
. 我已经验证了库和头文件在那里并且最近被修改过。
我正在尝试编译此处找到的 boost 异步 I/O 示例:http: //www.boost.org/doc/libs/1_52_0/doc/html/boost_asio/tutorial/tuttimer5/src.html(来源)。
这是我的编译命令:
g++ -Wall -c -g -I/usr/local/include src/test1.cpp -o src/test1.o
其中 src/test1.cpp 是示例源文件。这是我的链接命令(和错误):
g++ -Wall -L/usr/local/lib -lboost_thread -lboost_system src/test1.o -o bin/test1
Undefined symbols for architecture x86_64:
"boost::thread::~thread()", referenced from:
_main in test1.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
我尝试过使用 Apple 的 clang++ 4.0 和 g++ 4.6.0。我从两个程序中得到相同的未定义符号错误。
其他人似乎也无法编译此代码示例。我知道这个问题:C++ / Boost: Undefined Symbols in example?还有这个:编译 boost.asio 示例时出现链接器错误。但是,这些问题中的每一个似乎都已通过在命令行中添加适当的开关(-lboost_thread 和 -lboost_system)得到解决。我已经有了这些。我也试过添加 -lpthread 没有运气。
感谢您花时间看我的问题!任何帮助表示赞赏。:)