[GCC] gcc和g++是什么
Contents
gcc和g++区别介绍
GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等语言。
gcc 是GCC中的GUN C Compiler(C 编译器)
g++ 是GCC中的GUN C++ Compiler(C++编译器)
通常习惯使用gcc编译c语言程序,使用g++编译c++语言程序;
所以可以说gcc调用了C compiler,而g++调用了C++ compiler;
- 对于 .c和.cpp文件,gcc分别当做c和cpp文件编译
- 对于 .c和.cpp文件,g++则统一当做cpp文件编译
- 使用g++编译文件时,g++会自动链接标准库STL,而gcc不会自动链接STL
gcc是GCC编译器的通用编译指令,可以通过文件后缀名选择编译标准,比如:
xxx.c:默认以编译 C 语言程序的方式编译;
xxx.cpp:默认以编译 C++ 程序的方式编译;
xxx.go:默认以编译 Go 语言程序的方式编译;
gcc指令也可以通过选项-x显示指定编译语言,比如:
gcc -xc xxx.c : 表示以c语言标准编译
gcc -xc++ xxx.c : 表示以c++语言标准编译
gcc编译c++代码时无法自动链接标准库文件(比如:#include <string>
),需要通过选项lstdc++ -shared-libgcc
链接
gcc -xc++ -lstdc++ -shared-libgcc xxx.cpp
g++指令同样可以编译c语言程序,但g++指令编译c程序时一律按c++代码标准编译
举例(hello.cpp):
|
|
使用g++编译正常,用gcc编译时则会报错:
|
|
添加选项-lstdc++ -shared-libgcc
编译正常
|
|
举例(test.c/test.cpp):
|
|
使用g++编译时会抛出警告
|
|
使用g++编译cpp文件,或使用gcc编译则正常
|
|
gcc也可以编译golang程序,使用gccgo来编译golang程序