Difference between CC, gcc and g++?
编译时3个编译器cc、gcc、g++有什么区别?汇编中的C和C++代码代码生成、可用库、语言功能等?
答案是平台特定的;例如,在Linux上发生的事情与在Solaris上发生的事情不同。好的。
简单的部分(因为它不是平台特定的)是"gcc"和"g++"的分离:好的。
- gcc是gcc(gnu编译器集合)中的gnu c编译器。
- G++是GCC中的GNU C++编译器。
硬部分,因为它是平台特定的,所以是"cc"(和"cc")的含义。好的。
- 在Solaris上,CC通常是Sun C++编译器的名称。
- 在Solaris上,c c通常是sunc编译器的名称。
- 在Linux上,如果存在的话,cc可能是指向g++的链接。
- 在Linux上,cc是指向gcc的链接。
但是,即使在Solaris上,CC也可能是来自
在HP-UX上,默认的"c c"仍然是一个K&R-Only C编译器,安装后允许在必要时重新链接内核,并且不支持标准C,因此不能用于现代软件工作。您必须使用其他编译器名称("acc"iirc)。同样,在AIX上,System C编译器使用诸如"xlc"或"xlc32"之类的名称。好的。
传统上,默认的系统编译器被称为"cc",当它不知道还可以使用什么时,自我配置软件就会回到这个名称上。好的。
POSIX试图通过要求程序C89(最初)和后来的C99存在来对此进行立法;这些程序是与ISO/IEC 9899:1989和9899:1999 C标准兼容的编译器。POSIX是否成功是值得怀疑的。好的。
这个问题问的是功能和库之间的区别。和以前一样,答案部分是平台特定的,部分是通用的。好的。
最大的差别是C编译器和C++编译器之间的差异。C++编译器将接受C++程序,不编译任意的C程序。(虽然可以在C中理解的子集中编写C,但是许多C程序不是有效的C++程序)。类似地,C编译器将接受C程序并拒绝大多数C++程序(因为大多数C++程序使用C中不可用的构造)。好的。
可用的库集取决于语言。C++程序通常可以在给定平台上使用C库;C程序通常不能使用C++库。因此,C++有一个更大的库集可用。好的。
请注意,如果您使用的是Solaris,CC生成的对象代码与G++生成的对象代码不兼容——它们是两个独立的编译器,对于异常处理和名称管理等事项具有不同的约定(名称管理故意不同,以确保不兼容的对象文件不会链接在一起!!)这意味着,如果要使用使用使用cc编译的库,则必须使用cc编译整个程序。这也意味着,如果你想使用一个用cc编译的库,另一个用g++编译的库,那你就走运了。您必须至少重新编译其中一个库。好的。
在汇编程序生成的质量方面,gcc(GNU编译器集合)做得非常好。但有时本机编译器的工作会更好一些。我相信,英特尔编译器有更多尚未在GCC中复制的广泛优化。但是任何这样的言论都是危险的,而我们不知道你所关心的平台是什么。好的。
在语言特征方面,编译器通常都相当接近当前标准(C++ 98、C++ 2003、C99),但是标准语言和编译器支持的语言之间通常存在小的差异。对于所有C编译器,旧的C89标准支持基本上是相同的(并且是完整的)。语言中较暗的角落有差异。您需要理解"未定义的行为"、"系统定义的行为"和"未指定的行为";如果调用未定义的行为,您将在不同的时间得到不同的结果。还有许多选项(尤其是使用GCC)来调整编译器的行为。GCC有各种各样的扩展,如果你知道你只针对这个编译器系列,那么你的生活就简单了。好的。好啊。
EDOCX1 5是一个驱动二进制,像EDCOX1,4,但有几个特殊的选项集用于编译C++。值得注意的是(根据我的经验),默认情况下,
我只想在Linux中添加一个CC信息。它与GCC有关。去检查一下。。
同样,C++也是一样。
1 2 3 4 5 6 | uddhavpgautam@UbuntuServer1604:~/Desktop/c++$ whereis c++ c++: /usr/bin/c++ /usr/include/c++ /usr/share/man/man1/c++.1.gz uddhavpgautam@UbuntuServer1604:~/Desktop/c++$ ls -l /usr/bin/c++ lrwxrwxrwx 1 root root 21 Jul 31 14:00 /usr/bin/c++ -> /etc/alternatives/c++ uddhavpgautam@UbuntuServer1604:~/Desktop/c++$ ls -l /etc/alternatives/c++ lrwxrwxrwx 1 root root 12 Jul 31 14:00 /etc/alternatives/c++ -> /usr/bin/g++ |