【问题标题】:Unix C++ compilers that do not understand -c -o不理解 -c -o 的 Unix C++ 编译器
【发布时间】:2011-11-25 18:14:34
【问题描述】:

Autoconf/Automake 竭力支持不理解同时使用-c-o 选项的古老C 编译器(使用this 名称创建目标文件)。有AM_PROG_CC_C_O 和一个特殊的包装脚本,如果你想使用subdir-objects 模式,还有Automake 手册warns you to use them

没有AM_PROG_CXX_C_O。修改AM_PROG_CC_C_O改为测试C++编译器并不难,但我想知道是否有必要。是否有不支持同时使用-c-o 的Unix C++ 编译器(可能是Cfront?)?说到这里,不支持它的 C 编译器有多老了——例如,有没有支持 C89 的编译器遇到这个问题?

【问题讨论】:

  • +1:肯定有这样的(C)编译器。是否有任何当前(受支持的)编译器没有该功能是一个重要问题。是否仍有此类编译器的旧版本在使用中更难评估;软件倾向于在“结束前最佳”日期之后很久才使用。
  • “-c -o”的问题是 -c 可能会使编译器生成多个输出,此时 -o 选项变得毫无意义。
  • @SimonRichter 这是一个有趣的观点,然而,个人知道的最后一个编译器没有对-c -o 做一些明智的事情是Solaris 的K&R-only @ 987654331@,这甚至不是您可以开始使用并引导自己更新的编译器的东西。

标签: c++ history portability autotools


【解决方案1】:

有一些编译器,主要是针对嵌入式行业的编译器,您必须手动编译和链接。在这些情况下,-c 选项没有意义。

鉴于 Linux 越来越多地用于嵌入式系统,您绝对应该将这些考虑在内。

【讨论】:

  • 我不知道你说的“手动编译和链接”是什么意思。您能否指出一个具有您正在考虑的属性的编译器的具体示例,最好是它的文档?
  • 另外,请允许我强调一下,这不是我在这里要问的一个 Linux 特定的问题。我认为这主要是一个历史兴趣问题。
  • “手动”是指您发出一个命令来编译到目标文件,而另一个命令来执行链接。没有可以编译和链接的包装器,因此没有-c 选项的意义。一个具体的例子是来自IAR Systems 的编译器,它们是IAR Embedded Workbench 的一部分。我不确定这些手册是否在线,但您可以下载所谓的 Kickstart 版本来获取它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-22
  • 2010-12-12
  • 2020-01-31
  • 2019-07-20
  • 2011-08-24
  • 1970-01-01
相关资源
最近更新 更多