首頁 >後端開發 >C++ >為什麼我的多執行緒 C 程式碼無法使用 g 編譯?

為什麼我的多執行緒 C 程式碼無法使用 g 編譯?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-01 06:01:30510瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn