GCC编译总结

简介

  1. 现在的GCC不仅支持C还支持C++、Java等语言。
  2. Gcc的编译流程
    a) 预处理:生成.i/.ii文件;
    b) 编译:生成.s/.S文件;
    c) 汇编:生成.o文件;
    d) 链接:生成可执行文件;
  3. Gcc支持的后缀文件类型
  4. Gcc指令的一般格式:gcc [选项] 要编译的文件 [选项] [目标文件]

编译流程介绍

  1. 预处理:该阶段将.h文件中的代码包含进程序中;
  2. 编译
    a) 主要是对预编译后的.i文件编译,生成汇编代码的.s文件。
    b) gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。
  3. 汇编
    a) 将编译后的.s文件转化成二进制文件.o的过程
    b) 利用-c选项可以生成二进制.o文件。
  4. 链接
    a) 主要将成功编译的二进制.o文件进行链接操作,生成可执行文件。
    b) Eg: gcc –o test test.o

GCC常用编译选项

  1. linux系统的头文件默认在:/usr/include
  2. linux系统的库文件默认在:/usr/lib/
  3. linux库文件的命名:必须以lib三个字母开头。
  4. Linux下的库文件分为两大类分别是动态链接库(通常以.so结尾)和静态链接库(通常以.a结尾),二者的区别仅在于程序执行时所需的代码是在运行时动态加载的,还是在编译时静态加载的。
    默认情况下, GCC在链接时优先使用动态链接库,只有当动态链接库不存在时才考虑使用静态链接库,如果需要使用静态链接库可以在编译时加上-static选项,强制使用静态链接库。
    比如在/usr/local/mysql/lib目录下有链接时所需要的库文件libmysqlclient.so和libmysqlclient.a,为了让GCC在链接时只用到静态链接库,可以使用下面的命令:
gcc –L /usr/local/mysql/lib -static –lmysqlclient test.o –o test
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值