【问题标题】:What is the POSIX c99 utility usually implemented as on Linux systems?通常在 Linux 系统上实现的 POSIX c99 实用程序是什么?
【发布时间】:2011-11-29 12:27:56
【问题描述】:

我很好奇POSIX c99 utility 通常在 GNU/Linux 发行版中实现什么。

我意识到这确实是每个发行版的文档都应该回答的问题,但是我的 openSUSE 11.4 安装手册和 Ubuntu's manpage 基本上都列出了与 POSIX 标准相似的信息,而没有指定编译器实际上是什么(即,是 GCC、Clang 还是其他)。

那么有谁知道常见的做法是什么?我的猜测是它是带有 -std=c99 选项的 gcc 包装器,可能添加了 -pedantic 以更符合 C99 标准。

【问题讨论】:

  • 如果您认为 c99 完全符合 POSIX c99 应该做的事情,那么您为什么会关心它是 gcc 还是 clang?
  • @Jens:您不会单独选择符合标准的编译器。如果它产生慢代码,你会去寻找其他可以编译 C99 代码的东西。
  • @lasmans:虽然这可能是真的,但我认为它不适用于这个问题(编译器的代码速度也没有黑白答案,因为它可能取决于许多选项) .这就是为什么我询问 Quantumboredom 的潜在动机。它必须不仅仅是发行版的 c99 编译器供应商统计数据,这本身就是一个相当无用的信息。
  • 这真的只是好奇,知道它是否是在大多数情况下使用的可接受的编译器很有趣(从性能和兼容性的角度来看)。因为事实证明(至少在我的系统上)它可能是 gcc -std=c99 -pedantic,所以只要不需要额外的 gcc 选项就可以使用它。

标签: posix c99


【解决方案1】:

通常,它确实是gcc -std=c99 的包装器,尽管它可能会根据环境变量CC 选择编译器。你可以通过file /usr/bin/c99 来检查自己,如果它是一个 shell 脚本,或者检查它指向的位置,如果它是一个符号链接。

【讨论】:

  • 在我的系统(openSUSE 11.4)上,它实际上是一个可执行文件:“/usr/bin/c99: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamiclinked (uses shared libs),对于 GNU/Linux 2.6.4,已剥离"。我也期望它是符号链接或脚本。用 vim 打开可执行文件确实显示了这一点(在胡言乱语中):“B^@malloc^@-std=c99^@-pedantic^@cD:EgI:l:L:o:OsU:^@missing operand^@/ usr/bin/gcc^@execv(/usr/bin/gcc)^@^"。所以它可能是 gcc -std=c99 -pedantic,至少在我的系统上。
  • @Quantumboredom:可以使用strings 命令提取乱码之间的内容。
猜你喜欢
  • 1970-01-01
  • 2016-03-04
  • 2013-09-04
  • 2016-05-25
  • 2010-10-24
  • 2015-01-23
  • 2010-10-04
  • 2014-08-20
  • 1970-01-01
相关资源
最近更新 更多