一、单文件编译
1、无选项自动编译链接
命令:gcc main.cpp
作用:将main.cpp预处理、汇编、编译并链接生成可执行文件。默认输出为a.out。
2、-o(小写)
命令:gcc main.cpp -o demo
作用:将main.cpp预处理、汇编、编译并链接生成可执行文件demo。-o选项用来指定输出文件的文件名。
3、-E
命令:gcc -E main.cpp -o main.i
作用:将main.cpp预处理输出main.i文件。
4、-S
命令:gcc -S main.i
作用:将预处理输出文件main.i汇编成main.s文件。
5、-c
命令:gcc -c main.s
作用:将汇编输出文件main.s编译输出main.o文件。
6、无选项链接
命令:gcc main.o -o demo
作用:将编译输出文件main.o链接生成最终可执行文件demo。
7、-O(大写)
命令:gcc -O1 main.cpp -o demo
作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,编译时间越长。
二、多文件编译
1、多个文件一起编译
命令:gcc utils.cpp main.cpp -o demo
作用:将utils.cpp和main.cpp分别编译后链接成demo可执行文件。
2、分别编译各个源文件,之后对编译后输出的目标文件链接。
命令:
gcc -c utils.cpp //生成utils.o
gcc -c main.cpp //生成main.o
gcc -o utils.o main.o -o demo //将utils.o和main.o链接生成demo
三、外部库文件依赖链接编译
1、-I(大写)
命令:gcc -c -I /usr/dev/mysql/include main.cpp -o main.o
作用:包含mysql驱动库头文件目录,并编译生成目标文件main.o。
2、-L(大写),-l(小写)
命令:gcc -L /usr/dev/mysql/lib -lmysqlclient main.o -o demo
作用:通过-L指定依赖库目录,并通过-l指定具体依赖库名,链接生成可执行文件。
3、-static
命令:gcc -L /usr/dev/mysql/lib -static -lmysqlclient main.o -o demo
作用:强制链接是使用静态库链接库,如果在依赖库目录下同时存在libmysqlclient.so和libmysqlclient.a。