2011-10-02 27 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

相关问题