使用提升库时出错
Error when I am using boost library
本文关键字:出错 更新时间:2023-10-16
我试图使用库Boost,但我无法编译任何代码。
我在 Linux mint 中使用以下命令安装 boost
$ sudo ./bootstrap.sh --prefix=/usr/local
$ sudo ./b2 install
这是我的程序,我从这个网站复制并粘贴 https://en.wikibooks.org/wiki/C%2B%2B_Programming/Libraries/Boost
#include <boost/thread/thread.hpp>
#include <iostream>
using namespace std;
void hello_world()
{
cout << "Hello world, I'm a thread!" << endl;
}
int main(int argc, char* argv[])
{
// start two new threads that calls the "hello_world" function
boost::thread my_thread1(&hello_world);
boost::thread my_thread2(&hello_world);
// wait for both threads to finish
my_thread1.join();
my_thread2.join();
return 0;
}
当您尝试编译它时,会发生此错误
$ g++ -Wall -Wextra -g cppc.cpp -o test
cppc.cpp:32:14: warning: unused parameter ‘argc’ [-Wunused-parameter]
int main(int argc , char * argv[]){
^
cppc.cpp:32:33: warning: unused parameter ‘argv’ [-Wunused-parameter]
int main(int argc , char * argv[]){
^
/tmp/ccOvZcci.o: En la función `__static_initialization_and_destruction_0(int, int)':
/usr/local/include/boost/system/error_code.hpp:206: referencia a `boost::system::generic_category()' sin definir
/usr/local/include/boost/system/error_code.hpp:208: referencia a `boost::system::generic_category()' sin definir
/usr/local/include/boost/system/error_code.hpp:210: referencia a `boost::system::system_category()' sin definir
/tmp/ccOvZcci.o: En la función `boost::thread_exception::thread_exception(int, char const*)':
/usr/local/include/boost/thread/exceptions.hpp:51: referencia a `boost::system::generic_category()' sin definir
/tmp/ccOvZcci.o: En la función `boost::detail::thread_data_base::thread_data_base()':
/usr/local/include/boost/thread/pthread/thread_data.hpp:152: referencia a `vtable for boost::detail::thread_data_base' sin definir
/tmp/ccOvZcci.o: En la función `boost::thread::start_thread()':
/usr/local/include/boost/thread/detail/thread.hpp:186: referencia a `boost::thread::start_thread_noexcept()' sin definir
/tmp/ccOvZcci.o: En la función `boost::thread::~thread()':
/usr/local/include/boost/thread/detail/thread.hpp:261: referencia a `boost::thread::detach()' sin definir
/tmp/ccOvZcci.o: En la función `boost::thread::get_id() const':
/usr/local/include/boost/thread/detail/thread.hpp:751: referencia a `boost::thread::native_handle()' sin definir
/tmp/ccOvZcci.o: En la función `boost::thread::join()':
/usr/local/include/boost/thread/detail/thread.hpp:777: referencia a `boost::thread::join_noexcept()' sin definir
/tmp/ccOvZcci.o: En la función `boost::detail::thread_data<void (*)()>::~thread_data()':
/usr/local/include/boost/thread/detail/thread.hpp:90: referencia a `boost::detail::thread_data_base::~thread_data_base()' sin definir
/tmp/ccOvZcci.o:(.rodata._ZTIN5boost6detail11thread_dataIPFvvEEE[_ZTIN5boost6detail11thread_dataIPFvvEEE]+0x10): referencia a `typeinfo for boost::detail::thread_data_base' sin definir
collect2: error: ld returned 1 exit stat
我能做什么?
这是链接器错误,而不是编译器错误。 您必须与 Boost 库链接。
g++ -Wall -Wextra -g cppc.cpp -o test -lboost_thread -lboost_system
有关此内容的更多信息,请参阅文档的"使用和构建库"部分:
Boost.Thread 依赖于一些非仅标头库。
- Boost.System:此依赖项是必需的,您需要与库链接。
- Boost.Chrono:此依赖项是可选的(请参阅下面的配置方法(,如果您使用某些与时间相关的接口,则需要与库链接。
Boost.DateTime- :此依赖项是必需的,但即使 Boost.DateTime 是非仅标头库,Boost.Thread 也只使用仅标头的部分,因此原则上您不需要与库链接。
也许您想使用不需要链接第 3 方库的std::thread
(C++11(?
你必须告诉你的编译器,你的代码想要使用部分 boost。将标志添加到-lboost_thread -pthread
。
我建议阅读什么是库以及如何将它们链接到您的程序中。
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 为x86而非x64编译时出错
- 从R调用C++函数并对其进行集成时出错
- 这个函数哪里出错了
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 为重写std::exception的库生成swig接口时出错
- 导入/导出变量时出错
- PrintWindow函数在notepad.exe中出错