c 代码的编译主要分为 4 个阶段:预处理、编译、汇编、链接;使用 gcc 可以帮助我们完成每个阶段;
简单 c 代码 test.c:
###gcc 命令用法简单说明
-
最简单编译链接 .c 文件命令
$ gcc test.c
将 test.c 编译链接为可执行文件,由于未制定输出文件名,默认生成可执行文件 a.out;
$ ./a.out
Hello world! -
指定输出文件名选项 -o
$ gcc test.c -o test
-
预处理选项 -E
$ gcc -E test.c -o test.i
预处理 test.c 后输出到 test.i 中;
-
汇编选项 -S
$ gcc -S test.i
将预处理文件 test.i 汇编,输出到 test.s 中;
-
编译选项 -c
$ gcc -c test.s -o test.o
编译 test.s 完成后输出到文件 test.o 中;
-
编译优化级别(1-3)选项 -O
$ gcc -O1 test.c -o test
以编译优化级别为 1 来编译 test.c。优化级别越大,效果越好,时间越长;
-
打开警告信息提示选项 -W、-Wall
gcc -Wall test.c -o test
加入选项 -Wall 后,将会显示 .c 文件编译时的警告信息;
-
链接使用库文件选项 -l
如果 test.c 中有用到 #include
,那么就需要加 -lm,代表需要使用 libmath; gcc -lm test.c -o test
-lxxx 连接名为 xxx的库文件,在标准搜索目录中寻找库文件
liblibrary.a
,-L dir
选项也可指定包含其他搜索路径; -
多文件编译
gcc func.c test.c -o test
-
分别编译源文件,链接目标文件,完成多文件编译
$ gcc -c func.c -o func.o
$ gcc -c test.c -o test.o
$ gcc -c func.o test.o -o test
这种方法可以在修改文件后,之重新编译修改过的文件,未修改过文件无需重新编译;