GCC常用编译命令选项
假设源程序文件名为main.c
1. 无选项编译链接
用法: gcc main.c
作用: main.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。
2. 选项 –o
用法:gcc main.c -o main.out
作用:将main.c预处理、汇编、编译并链接形成可执行文件main.out。-o选项用来指定输出文件的文件名。
3. 选项 –E
用法:gcc -E main.c -o main.i
作用:将 main.c预处理输出 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 main.out
作用:将编译输出文件main.o链接成最终可执行文件main.out。
7. 选项-O
用法:gcc -O1 main.c -o main.out
作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。
8.运行可执行文件
用法:>>./main.out
输出结果
9.查看动态可执行文件动态库加载情况
用法:>>ldd main.exe
静态库后缀名一般为“.a”
动态库后缀名一般为“.so”
10.反汇编
用法:objdump -d main.out
二. 多源文件的编译方法
假设有两个源文件为main.c和test.c
1、多个文件一起编译
用法:gcc main.c test.c -o main.out
作用:将main.c和test.c分别编译后链接成main.out可执行文件。
2、分别编译各个源文件,之后对编译后输出的目标文件链接。
用法:gcc -c main.c //将main.c编译成main.o
gcc -c test.c //将test.c编译成test.o
gcc -o main.o test.o -o main//将main.o和test.o链接成main
3、如果要编译的文件都在同一个目录下,可以用通配符gcc *.c -o 来进行编译。
4、如果是一个项目的话,可能会有上百个文件,则把上述的编译过程写进一个文本文件(makefile)中,但makefile 的编写不是件容易的事情,因为自己写的makefile可能不能在所有的unix/linux类操作系统下通用。因此在很多项目中都用automake.autoconf、Cmake等工具。
浙公网安备 33010602011771号