1 gcc编译器的基本语法格式如下:
gcc 【选项】 准备编译的文件 【选项】 【目标文件】
例如:编译名为 test.c 的c程序 : gcc test.c -o test
2 若使用gcc编译器编译c++程序,与编译c程序略有不同:
若cpp文件中未使用任何c++标准库的内容,即还是c语言,则无需特殊处理;
若cpp文件使用了如std命名空间等c++内容,则在gcc选项中需要链接上相关c++库;
例如:使用gcc编译名为 test.cpp 的c++程序,其中使用了std命名空间:
gcc test.cpp -lstdc++ -o test
-l:gcc的链接选项 ,将c++标准库的stdc++链接上
3 gcc常见选项
无选项:在准备编译的文件目录下生成可执行文件 a.out ,例如:gcc test.c
-x:告诉gcc源文件的语言,若不使用,则默认根据文件后缀判断语言,例如:gcc -x c test.fuck ,“c”处还可为:c++ ,assembler ,c-header ,objective-c ,等
-o:用于指定结果名称
-c:告诉gcc只进行编译和汇编,不进行链接,将生成一个不可执行的 .o 文件,例如:gcc -c test.cpp
-I(大写i):指定头文件所在文件夹路径,语法:-I dirPath 。若源代码使用尖括号包含头文件,gcc首先在-I指定的目录下寻找,再到标准默认路径/usr/local/include下搜索,再到标准默认路径/usr/include下搜索,再搜索不到就报错;若使用双引号包含的头文件,gcc先在当前工作目录寻找,再到上述三个目录寻找。例如:gcc test.cpp -I /fuck/inc -o test
-include:有时候源程序没有写包含头文件的代码却使用了头文件内容,可以考虑是在gcc编译阶段进行了包含,使用方法: gcc [srcfile] -include [headfile],例如:gcc test.cpp -include /fuck/inc/test.h -o test
-Wall:显示所有警告信息,例如:gcc test.cpp -Wall -o test
-g:可以产生供gdb调试的可执行文件,例如:gcc test.cpp -g -o test
-pg:可以产生供gprof剖析用的可执行文件,用于性能分析
-l:用于链接动态链接库,用法是直接加上库名字,例如:gcc test.cpp -lstdc++ -o test
4 g++的基本使用
g++与gcc类似,,有相同的语法结构和选项,专用于编译c++文件,且能自动链接c++标准库,更为方便。
编译多个c++程序:g++ test1.cpp test2.cpp -o test