gcc参数选项整理

3 分钟阅读

参数

-o 输出文件名

gcc test.c -o test 将gcc的处理结果输出到test文件中。本例中输出可执行文件。

-E 输出预处理文件

gcc -E test.c -o test.i 将预处理输出到test.i文件中。在大型项目中,可能各个宏的值不容易从代码里面直接看出来,通过-E参数,可以全部展开。

-S 输出汇编文件

gcc -S test.i -o test.S gcc -S test.c -o test.S 将预处理文件test.i,或者源代码文件test.c,转出汇编文件test.S。

-c 输出编译中间文件

gcc -c test.S -o test.o gcc -c test.i -o test.o gcc -c test.c -o test.o 将汇编文件test.S,或者预处理文件test.i,或者源代码文件test.c,编译成输出文件test.o;再将输出文件编译成可执行文件test。

无参数 输出可执行文件

gcc test.c -o test gcc test.S -o test gcc test.i -o test gcc test.o -o test

-O

gcc -O1 test.c -o test 使用优化级别1编译程序。级别1~3,越大优化越多,编译时间越长。也可以不带数字,默认是1。

-Dmacro

  1. gcc -DNO_FUNCTION test.c -o test 相当于test.c中添加宏定义#define NO_FUNCTION 1
  2. gcc -DCPU_NUM=4 test.c -o test 相当于test.c中添加宏定义#define CPU_NUM 4
  3. gcc -DCPU_NUM="4" test.c -o test 与上相同,相当于定义#define CPU_NUM 4
  4. gcc -DCPU_NUM=\"4\" test.c -o test 定义一个字符串宏,相当于#define CPU_NUM "4"

-Wall

生成所有警告信息

-lxx -Lxx -Ixx

gcc test.c -lstr -L/path/lib -I/path/include -o test 表示链接libstr.so库,库所在路径为/path/lib,头文件所在路径为/path/include

-g

gcc -g test.c -o test 生成gbd的调试信息,可以通过gdb test跟踪调试

其他配置

库路径

  • /etc/so.ld.conf中添加默认库路径,然后执行ldconfig

  • /etc/ld.so.conf中添加默认库路径,然后执行ldconfig

  • export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/XXX,当前终端生效