首页 >后端开发 >C++ >为什么我的 C `std::thread` 代码无法在 Linux 上使用 GCC 链接,如何修复它?

为什么我的 C `std::thread` 代码无法在 Linux 上使用 GCC 链接,如何修复它?

Linda Hamilton
Linda Hamilton原创
2024-11-29 07:08:09250浏览

Why Does My C   `std::thread` Code Fail to Link on Linux with GCC, and How Can I Fix It?

解决在 Linux 上使用 std::thread 与 GCC 时的链接问题

在 C 多线程领域,C 标准库提供了std::thread 类。当尝试在 Linux 系统上使用 std::thread 与 GCC 时,可能会出现以下错误:

terminate called after throwing an instance of 'std::system_error'
what(): Operation not permitted 
Aborted

原因:

此错误表明链接正确尚未为编译器指定选项来解析与 std::thread 相关的依赖项。具体来说,在 Linux 上,pthread 库参与了 std::thread 的实现。

解决方案:

要解决此问题,-pthread 编译器选项必须被雇用。此选项指示编译器将程序链接到 pthread 库。以下是如何使用适当的链接选项正确编译代码:

g++ -std=c++0x test.cpp -pthread

链接选项放置:

值得注意的是,应列出 -pthread 选项编译时源文件(.cpp)之后。这可以确保编译器正确解析依赖关系。

修改后的命令:

添加 -pthread 选项后,修改后的编译命令将显示为:

g++ -std=c++0x test.cpp -pthread

通过合并 -pthread 选项,代码将成功编译和执行,从而允许 std::thread 在您的多线程中按预期运行Linux环境。

以上是为什么我的 C `std::thread` 代码无法在 Linux 上使用 GCC 链接,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn