1、gcc的编译过程
预处理(.c/.cpp) ->编译(.i) ->汇编(.s) -> 链接(*.o)->App
2、一些常用的编译选项
常用选项 | 描述 |
---|---|
-E | 预处理,开发过程中想快速确定某个宏可以使用“-E -dM” |
-c | 把预处理、编译、汇编都做了,但是不链接 |
-o | 指定输出文件 |
-I | 指定头文件目录 |
-L | 指定链接时库文件目录 |
-l | 指定链接哪个库文件 |
3、编译多个文件
(1) 一起编译、链接
gcc -o test main.c sub.c
(2) 单独编译、链接
gcc -c -o main.o main.c
gcc -c -o sub.o sub.c
gcc -o test main.o sub.o
(4)制作、使用动态库
gcc -c -o main.o main.c
gcc -c -o sub.o sub.c
gcc -shared -o libsub.so sub.o(这里可以使用多个.o生成动态库 sub1.o sub2.o)
gcc -o test main.o -lsub -L /libsub.so(libsub.so所在目录)
(5)制作、使用静态库
gcc -c -o main.o main.c
gcc -c -o sub.o sub.c
ar crs libsub.a sub.o
gcc -o test main.o libsub.a
(6) 一些很有用的选项
gcc -E main.c // 查看预处理结果,比如头文件是哪个
gcc -E -dM main.c > 1.txt // 把所有的宏展开,存在 1.txt 里
gcc -Wp,-MD,abc.dep -c -o main.o main.c // 生成依赖文件 abc.dep,后面 Makefile 会用