【问题标题】:undefined reference to `boost::thread对`boost::thread 的未定义引用
【发布时间】:2015-11-19 10:04:21
【问题描述】:

我正在尝试将 libgetfiles.so 链接到 main.cpp。我运行了以下命令:

sudo g++ main.cpp -L/ubuntu/test -lgetfiles -L/usr/local/lib/ -lboost_thread

它给了我以下错误:

/ubuntu/test/libgetfiles.so: undefined reference to'boost::thread::start_thread_noexcept()' /ubuntu/test/libgetfiles.so: undefined reference to 'boost::thread::join_noexcept()' /ubuntu/test/libgetfiles.so: undefined reference to 'boost::system::system_category()' /ubuntu/test/libgetfiles.so: undefined reference to 'boost::system::generic_category()'

我该如何解决?

我也尝试过卸载和重新安装 boost 库。 我也试过下面的命令:

g++ main.cpp -L/ubuntu/test -lgetfiles -L/usr/local/lib/ -lboost_thread-mt

他们两个都不适合我。

【问题讨论】:

  • 你确定你有 /usr/local/lib/ 中的库吗?
  • 您可能还应该将-lboost_system 添加到链接器标志。
  • @Zereges 感谢 Zereges。这减少了 boost::system 错误,但我仍然有 boost::thread 错误
  • @Oleksandr Kravchuk 我使用 sudo apt-get install libboost-all-dev 命令安装 boost。那么如何查看所有包的安装位置呢?

标签: c++ linux ubuntu boost


【解决方案1】:

如果您手动构建和安装 boost(即特定版本),您应该检查您是否已经在 /usr/lib 中安装了 libboost-all-dev 包。尝试rm /usr/lib/libboost* && rm -r /usr/include/boost,然后重新构建。

【讨论】: