首页 > 后端开发 > C++ > 正文

为什么我的多线程 C 代码无法使用 g 编译?

Mary-Kate Olsen
发布: 2024-11-01 06:01:30
原创
424 人浏览过

Why Does My Multithreaded C   Code Fail to Compile with g  ?

使用 g 编译多线程代码

尽管有必要的标志 (-pthread -std=c 11),您的代码仍无法编译g ,导致错误:“启用多线程以使用 std::thread: 不允许操作。”

解决问题

根本问题源于错误在海湾合作委员会。要避免此问题,您可以应用以下解决方法:

<code class="bash">g++ main.cpp -o main.out -pthread -std=c++11 -Wl,--no-as-needed</code>
登录后复制

了解解决方法

-Wl,--no-as-needed 标志指示链接器省略了线程库的动态加载。默认情况下,链接器将线程库作为已编译程序的一部分包含在内,但此过程在某些情况下可能会失败。

替代编译器:clang

作为替代要修改 g 命令行,您还可以使用不同的 C 编译器,例如 clang 。以下命令将成功编译您的代码:

<code class="bash">clang++ main.cpp -o main.out -std=c++11</code>
登录后复制

结论

通过使用 -Wl,--no-as-need 解决方法或选择替代方法像 clang 这样的编译器,可以克服 g 遇到的多线程编译问题。

以上是为什么我的多线程 C 代码无法使用 g 编译?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!