gcc编译基础

1.源程序编译过程:
预处理:头文件展开,宏替换,删除注释
编译:c文件编译成汇编文件
汇编:将汇编程序编译成机器码
链接:将函数库中相应代码组合到目标文件中
2.gcc参数
预处理:gcc -E *.c -o *.i
编译:gcc -S *.i -o *.s
汇编:gcc -c *.s -o *.o
链接:gcc *.o -o *.elf

头文件目录指定--------  -I+path
编译过程中指定宏------  -D + name
程序优化-----------  -O  -O2 -O3
输出警告----------   -Wall
带调试信息-------  -g(用于gdb调试)
指定静态库路径-------  -L+静态库路径
指定使用库的名称----- -l +  name
生成与位置无关的代码----   -fPIC(用于动态库生成)
生成动态库--------   -shared 
nm 查看动态库静态库中的符号和类型
ldd 查看程序依赖

3.静态库
(1)编译源文件生成*.o文件
(2)使用ar将*.o文件进行打包
ar rcs lib*.a *.o`
(3)静态库优缺点:无需提供库,加载库速度较快,目标文件较大,库改变需重新编译目标文件。
4.动态库
(1) gcc -fPIC -c *.c -o .o
(2) gcc -shared lib
.so *.o
(3) 将动态库所在路径加入LD_LIBRARY_PATH中或者将路径加入连接器配置文件中(/etc/ld.so.config)然后执行sudo ldconfig -v进行更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值