使用 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中文网其他相关文章!