首頁  >  文章  >  後端開發  >  使用 GCC 編譯時何時指定“-stdlib=libstdc”?

使用 GCC 編譯時何時指定“-stdlib=libstdc”?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-24 02:20:02441瀏覽

When to Specify

何時使用 -stdlib=libstdc

使用 gcc 編譯時, -stdlib=libstdc 標誌指定要使用的 C 標準函式庫。在大多數情況下,編譯器會自動使用 libstdc (GNU C 函式庫)作為預設值。但是,在某些情況下,可能需要明確指定 -stdlib=libstdc 。

編譯器特定行為

在 Linux 上,所有主要發行版都使用 libstdc 作為預設 C 函式庫,最近的 GCC 版本預設支援 C 11。要編譯C 11 程式碼,您可以使用:

  • g -std=c 11 input.cxx -o a.out
  • g -std=gnu 11 input.cxx - o a.out

在Mavericks 之前的OS X 上, g 是clang 的別名,Apple 較舊的libstdc 是預設值。若要使用 libc (包括 C 11 函式庫支援),請傳遞 -stdlib=libc 。編譯選項包括:

  • g -std=c 11 -stdlib=libc input.cxx -o a.out
  • g -std=gnu 11 -stdlib=libc input.cxx -o a.out
  • clang -std=c 11 -stdlib=libc input.cxx -o a.out
  • clang -std=gnu 11 -stdlib=libc input.cxx -o a.out

OS X Mavericks 及更高版本

自OS X Mavericks 以來,libc 已成為預設的C 庫。在這種情況下,您應該避免使用 -stdlib= 標誌。值得注意的是,Xcode 10 及更高版本不再支援針對 libstdc 進行編譯。

推薦編譯選項

  • Linux:使用g -std=c 11 input.cxx - o a.out 或g -std=gnu 11 input. cxx -o a.out
  • OS X(小牛之前):使用g -std=c 11 -stdlib=libc input.cxx -o a。 out 或clang -std=c 11 -stdlib=libc input.cxx -o a.out
  • OS X(Mavericks 及更高版本):使用clang -std=c 11 input.cxx -o a. out 或clang -std=gnu 11 input.cxx -o a.out

以上是使用 GCC 編譯時何時指定“-stdlib=libstdc”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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