解决在 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中文网其他相关文章!