2011-10-02 30 views
1

我很好奇POSIX c99 utility通常在GNU/Linux發行版中實現。通常在Linux系統上實現的POSIX c99實用程序是什麼?

我意識到這確實是一個應該由每個發行版的文檔回答的問題,但是我的openSUSE 11.4安裝和Ubuntu's manpage的聯機幫助頁基本上只是列出與POSIX標準類似的信息,而沒有指定編譯器的實際內容(即它是GCC,Clang還是別的什麼)。

那麼有誰知道常用的做法是什麼?我的猜測是,它是使用-std = c99選項的gcc的一個包裝器,可能會添加-pedantic以更符合C99標準。

+0

如果你認爲c99正在做POSIX c99應該做的事情,爲什麼你會在乎它是在gcc或clang之下? – Jens

+0

@Jens:你不會選擇符合標準*的編譯器*。如果它產生慢代碼,你會去尋找其他可以編譯C99代碼的東西。 –

+0

@lasmans:雖然這可能是真的,但我認爲它不適用於這個問題(編譯器的代碼速度沒有黑白答案,因爲它可能取決於很多選項)。這就是爲什麼我詢問Quantumboredom的潛在動機。發行版必須比c99編譯器廠商的統計數據更多,而發行版本身就是一個相當無用的信息。 – Jens

回答

2

通常,它確實是gcc -std=c99的包裝,儘管它可能會根據環境變量CC選擇編譯器。您可以通過執行file /usr/bin/c99來檢查自己,如果它是一個shell腳本,或者檢查它指向的位置是否是符號鏈接,請檢查它。

+0

在我的系統(openSUSE 11.4)上,它實際上是一個可執行文件:GNU/Linux的「/ usr/bin/c99:ELF 64位LSB可執行文件,x86-64,版本1(SYSV),動態鏈接(使用共享庫) 2.6.4,剝離「。我也希望它可以是符號鏈接或腳本。用vim打開可執行文件確實顯示了這個(在亂碼中):「@^^ malloc^@ - std = c99^@ - 迂迴^ @ cD:EgI:l:L:o:OsU:^ @缺少操作數^ @/USR /斌/ GCC^@ execv(在/ usr /斌/ GCC)^ @ ^」。所以它可能是gcc -std = c99 -pedantic,至少在我的系統上。 – Quantumboredom

+1

@Quantumboredom:可以使用'strings'命令提取亂碼之間的內容。 –

+0

謝謝!我不知道那個命令。 – Quantumboredom

相關問題