烟台网站制作山海云,网站建设公司-信科网络,死循环网站,株洲专业建设网站gcc是C编译器#xff1b;g是C编译器#xff1b;linux下cc一般是一个符号连接#xff0c;指向gcc#xff1b;gcc和g都是GUN#xff08;组织#xff09;的编译器。而CC则一般是makefile里面的一个名字#xff0c;即宏定义#xff0c;嘿#xff0c;因为Linux/Unix都是大小…
gcc是C编译器g是C编译器linux下cc一般是一个符号连接指向gccgcc和g都是GUN组织的编译器。而CC则一般是makefile里面的一个名字即宏定义嘿因为Linux/Unix都是大小写敏感的系统这点一定要注意。 cc是Unix系统的C Compiler而gcc则是GNU Compiler CollectionGNU编译器套装。gcc原名为Gun C语言编译器因为它原本只能处理C语言但gcc很快地扩展包含很多编译器C、C、Objective-C、Ada、Fortran、Java。因此它们是不一样的一个是古老的C编译器一个是GNU编译器集合gcc里面的C编译器比cc强大多了因此没必要用cc。 下载不到cc的原因在于cc来自于昂贵的Unix系统cc是商业软件。 Linux下的cc是gcc符号连接可以通过$ls –l /usr/bin/cc来简单察看该变量是make程序的内建变量默认指向gcc。cc符号链接和变量存在的意义在于源码的移植性可以方便的用gcc来编译老的用cc编译的Unix软件甚至连makefile都不用改在而且也便于Linux程序在Unix下编译。 误区一gcc只能编译C代码g只能编译C代码。 两者都可以但请注意 1后缀为.c的gcc把它当作是C程序而g当作是c程序后缀为.cpp的两者都会认为是C程序注意虽然C是C的超集但是两者对语法的要求是有区别的。C的语法规则更加严谨一些。 2编译阶段g会调用gcc对于C代码两者是等价的但是因为gcc命令不能自动和C程序使用的库联接所以通常用g来完成链接为了统一起见干脆编译/链接统统用g了这就给人一种错觉好像cpp程序只能用g似的。 误区二gcc不会定义__cplusplus宏而g会 实际上这个宏只是标志着编译器将会把代码按C还是C语法来解释如上所述如果后缀为.c并且采用gcc编译器则该宏就是未定义的否则就是已定义。 误区三编译只能用gcc链接只能用g 严格来说这句话不算错误但是它混淆了概念应该这样说编译可以用gcc/g而链接可以用g或者gcc -lstdc。因为gcc命令不能自动和C程序使用的库联接所以通常使用g来完成联接。但在编译阶段g会自动调用gcc二者等价。 C的编译器肯定可以编译C的代码注意除了C对C的语法扩充之外编译和链接C和C的标准库通常也不一样呢用gcc而非g也编译了C的程序就证明了这一点。 注符号链接是一种特殊类型的文件它的内容只是一个字符串。它可能指向一个存在的文件也可能什么都不指向。当您在命令行或程序里提到符号链接的时候您实际上进入了它指向的文件前提是这个文件是存在的。