首页  >  文章  >  后端开发  >  为什么即使使用 -pthread 标志,g 仍然抛出“启用多线程以使用 std::thread: 不允许操作”?

为什么即使使用 -pthread 标志,g 仍然抛出“启用多线程以使用 std::thread: 不允许操作”?

Barbara Streisand
Barbara Streisand原创
2024-10-31 12:46:18356浏览

Why Does g   Still Throw

使用 g 编译多线程代码

尽管指定了必要的标志,但个人在使用 g 编译多线程代码时遇到了困难。该代码包含用于 I/O 和线程操作的头文件,非常简单,包含一个工作线程和一个主线程。然而,编译尝试导致了错误:

terminate called after throwing an instance of 'std::system_error'   
what():  Enable multithreading to use std::thread: Operation not permitted  
Aborted (core dumped)

个人已经在其编译命令中包含了 -pthread 标志,通常建议在 g 中启用多线程。然而问题依然存在。

问题的答案源于 gcc 的一个 bug。相关错误讨论的最后评论中建议的解决方法包括将以下标志添加到编译命令中:

-Wl,--no-as-needed

通过实施此解决方法,个人能够使用 g 成功编译并运行其多线程代码.

以上是为什么即使使用 -pthread 标志,g 仍然抛出“启用多线程以使用 std::thread: 不允许操作”?的详细内容。更多信息请关注PHP中文网其他相关文章!

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