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