c++ - Boost线程析构函数 undefined symbol

标签 c++ boost-asio undefined-symbol

我正在使用 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 中/本地/包括。我已验证库和 header 存在并且最近已修改。

我正在尝试编译此处的 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。我从两个程序中得到相同的 undefined symbol 错误。

其他人似乎也无法编译此代码示例。我知道这个问题:C++ / Boost: Undefined Symbols in example?还有这个:Linker error when compiling boost.asio example .但是,这些问题中的每一个似乎都已通过向命令行添加适当的开关(-lboost_thread 和 -lboost_system)得到解决。我已经有了那些。我也试过添加 -lpthread 但没有成功。

感谢您花时间看我的问题!任何帮助表示赞赏。 :)

最佳答案

刚遇到同样的问题,我发现恢复到 Boost 1.49 可以解决问题。 Boost 1.49 的下载链接在这里:

http://www.boost.org/users/history/version_1_49_0.html

在安装 1.49 之前,我通过删除 /usr/local/include/boost/usr/local/lib/*boost* 删除了 1.52。不确定 1.49 和 1.52 之间发生了什么变化导致了这个问题,或者 Boost 1.50 或 1.51 是否会起作用。

关于c++ - Boost线程析构函数 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13833657/

相关文章:

xcodebuild - xcodebuild 工作时 xctool 测试失败 - Travis CI

c++ - 基类和派生类中的模板成员之间的重载解析

c++ - 不能在构造函数中使用 boost.asio 解析器

c++ - boost::与 boost::asio 结合在一起。 boost::bind 不起作用,从示例复制

c++ - 为 Arduino 开发的 Xcode

c++ - 在 python 中使用链接库中的方法时出现属性错误

c++ - 标题困惑。编译器不识别数据类型

c++ - 如何在文本按钮上放置图标?

c++ - 为什么 OpenCV 的级联分类器检测会给出太大的输出?

c++ - 将没有默认构造函数的类设为另一个类的私有(private)属性