gcc使用率比较高选项

gcc全名: GNU C Compiler

过程选项

gcc编译器支持的后缀名(只列出部分)

1

gcc支持编译选项(只列出部分)

  1. 可以使用如下指令查看gcc详情

    man gcc
  2. 通过查看gcc官网手册

1

gcc -v //输出编译过程中详细信息
gcc -o //输出目标文件
gcc -E //预编译
gcc -S //编译
gcc -c //汇编
gcc -D //等同宏定义
gcc -g //包含gdb调试信息

gcc编译过程

gcc -v -o test.o test.c

1

  1. 预编译(未显示该过程,但实际有执行)

    cpp -o test.i test.c
    gcc -E -o test.i test.c//等同上面指令
  2. 编译(生成汇编文件)

    /usr/lib/gcc/x86_64-linux-gnu/5/cc1 -o /tmp/ccr10SkP.s test.c
    gcc -S -o /tmp/ccr10SkP.s test.c  //等同上面指令
  3. 汇编(生成二进制目标文件)

    as -v --64 -o /tmp/cc3gXlX5.o  /tmp/ccr10SkP.s
    gcc -c -o /tmp/cc3gXlX5.o /tmp/ccr10SkP.s //等同上面指令
  4. 链接(链接其他目标文件)

    /usr/lib/gcc/x86_64-linux-gnu/5/collect2 -o test /tmp/cc3gXlX5.o *.o+... 
    gcc -o test test.o //等同上面指令

使用gcc选项演示编译过程

  1. 生成.i(预编译文件)

    gcc -E -o test.i test.c
  2. 生成.s(汇编文件)

    gcc -S -o test.s test.i
    //该指令也能到达同样效果(.c --> .i --> .s)包含两个步骤
    gcc -S -o test.s test.c
  3. 生成.o(目标文件)

    gcc -c -o test.o test.s
    //该指令也能到达同样效果(.c --> .i --> .s --> .o)包含三个步骤
    gcc -c -o test.o test.c
  4. 链接(生成可执行文件)

    gcc -o test test.o
    //该指令也能到达同样效果(.c --> .i --> .s --> .o --> test)包四个步骤
    gcc -o test test.c
  5. 增加宏定义

    gcc -DDBG -o test test.c //等同在test.c中定义#define DBG
  6. 增加头文件路径

    将头文件放到head文件夹内,让gcc去head文件夹内查找。默认系统会去/usr/include/找

    gcc -Ihead -o test test.c

    可以使用如下指令查看系统头文件路径

    whereis stdio.h

库选项

1

编译(动态/静态)可执行文件

  1. 编译成动态文件(默认)(不会将类库包含进来)

    gcc -o test test.c
  2. 编译成静态文件(将类库也包含进来)

    gcc -static -o test test.c
  3. 对比静态文件和动态文件,静态文件要比动态大很多

    1

编译(静态库/动态库)

1

man ar //查看ar手册
  1. 编译成静态类库

    gcc -c -o common.o common.c
    ar crv libcommon.a common.o
    gcc -o test test.c -L./ libcommon.a
    ./test

    1

  2. 编译成动态库

    gcc -fPIC -c -o common.o common.c
    gcc -shared -o libcommon.so common.o

    隐式调用

    gcc -o test test.c -L./ libcommon.so

    执行,需要将libcommon.so拷贝进/usr/lib/或者将库文件路径加入/etc/ld.so.conf.d/libc.conf中

    ./test

    1

    显式调用暂不做讨论

警告选项

1

优化选项

1

一般有4个等级0-3,数字越大优化力度越强

gcc -O1 -o test test.c

转载请注明出处:http://www.wolfnx.com/2018/04/07/GccOptions

作者 : wolfnx
邮箱 : wolfnx@outlook.com
邮箱2 : lostnx@gmail.com

Click Me