GCC基础知识2
什么是GCC
gcc是一个跨平台的可移植交叉编译器,用于解析不同的语言
GCC特点
gcc编译过程
hello.c
gcc常用选项(除了可执行文件不加-o会生成a.out外,其他步骤后缀都是默认的)
gcc -E hello.c -o hello.i(预处理)
gcc -S hello.i -o hello.s .s是汇编文件(汇编)此处不加-o hello.s 也可以生成hello.s
gcc -c hello.c -o hello.o .o是二进制目标文件,取消链接(链接)
gcc hello.s -o hello 生成可执行文件
gcc hello.c -o hello或者gcc hello.s 直接编译生成可执行目标文件
gcc -c hello.c 或gcc -c hello.c -o hello.o或者gcc -c hello.s - o hello.o(只编译生成可重定位的目标文件)
gcc hello.c -o hello(一步完成以上步骤)
两步完成
gcc -c hello.c
-Wall 警告代码有问题的地方
-Ldir 将dir目录加入搜索头文件的目录路径
-llib链接lib库
-g在目标文件中嵌入调试信息,以便gdb调试
gcc编译多文件
hello.c hello函数的实现
hello.h hello函数的声明
main.c main函数
一次编译
gcc hello.c main.c -o main
./main
单独编译
gcc -c hello.c - o hello.o
gcc -c main.c -o main.o
gcc hello.o main.o -o main
./main
单独编译的好处利于程序的模块化编译,例如对hello函数做了修改则只需编译hello.c为hello.o
gcc -c hello.c -o hello.o
gcc hello.o main.o -o main
./main