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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值