首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引GCC为“抄送”与"gcc“

引GCC为“抄送”与"gcc“
EN

Stack Overflow用户
提问于 2009-06-02 14:49:12
回答 11查看 31.7K关注 0票数 70

我知道在大多数GNU/Linux系统上,可以从命令行以"cc“的名称调用GCC (而不是"gcc")。当它以一种方式和另一种方式调用时,GCC的行为有什么不同吗?

例如,我知道通过名称"g++“而不是" GCC”调用GCC会导致GCC的行为不同(它将.c文件视为C++源代码和链接-在C++标准库中)。"gcc“和”抄送“在行为上有相似的区别吗?

编辑:到目前为止,没有一个收到的答案给出了明确的“是”或“否”,即如果以一种方式调用而不是另一种方式调用,GCC的行为是否会有所不同。然而,深入研究源代码以检查其行为的想法将我引向了这条道路。根据我在那里的发现,我现在相信答案是:

号无论是通过" GCC“还是"cc"调用,gcc的行为都是一样的。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-06-02 15:41:56

至于grins,我刚刚追踪了argv[0]是如何在gcc (main.c -> top_lev.c -> opts.c -> langhooks.c)内部使用的,看起来argv[0]目前只是用来在malloc发生故障时给它一些报告。如果argv[0]不是gcc,则看起来不会有任何行为变化。

票数 35
EN

Stack Overflow用户

发布于 2009-06-02 15:07:24

在我看来,cc (链接到一些旧的SUS规范)旨在成为系统编译器的供应商中立接口。它被标记为遗留:

c89实用程序提供了一个到ISO C标准的接口,但是cc实用程序接受C语言的一种未指定的方言:它可以是标准C、通用C或其他变体。可移植的C程序应该符合ISO标准,并用c89编译。

POSIX有一个名为c99的实用程序,我认为它是c89的继任者。上面写着

c99实用程序基于最初在ISO 2:1993标准中引入的c89实用程序。c89的一些更改包括对标准库部分内容的修改,以说明新的标头和选项;例如,添加到-l rt操作数中,以及为跟踪函数添加的-l跟踪操作数中。

我并不真正熟悉所有这些不同的标准,但看起来最近的SUSv3 (POSIX:2004)和更新的POSIX:2008 (似乎还没有SUS编号)不再指定名为cc的实用程序,而只指定名为c99的实用程序。顺便说一下,我的Linux系统(Arch_Linux)包含一个c99的手册页,但没有包含c89,而且只包含一个名为cc的实用程序,但既不包含c89,也不包含c99。这里有很多混淆:)

票数 15
EN

Stack Overflow用户

发布于 2009-06-02 14:55:12

在我的苹果电脑上使用man gcc

在苹果版的GCC中,cc和gcc实际上都是指向一个编译器的符号链接,这个编译器的名字就像gcc-version。类似地,c++和g++是指向类似g++-version的编译器的链接。

基于此,我假设cc和gcc的行为方式是一样的。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/939989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档