一、GCC编译的详细参数以及动态库和静态库的制作

GCC编译参数:

-o:指定编译的目标,否则会生成的目标文件名是a.out;   gcc main.c -o main

-S:把源文件编译成汇编代码。

-E:只执行预处理

-include:包含头文件,功能如同在源码的语句#include <xxx.h>

-I:(大写i)指定程序包含头文件的路径,一般用于指定第三方库的头文件。

-L:编译时,用于指定程序第三方库的查找路径。

-l:链接时,指定程序需要进行链接的库。注:一般库文件名是libxxx.so,-I指定xxx即可。如-Ixxx

-rpath:程序执行需要指定动态库的路径,但是可以用-rpath参数在编译时指定程序运行时需要加载的库的路径。

-D:程序编译阶段可以定义一些宏,该方法可以让程序有选择性的运行代码。

-0n:这是程序的优化等级。n的范围是0-3。n越大优化等级越高,程序运行的越快。否则越慢,n==0时是关闭优化。等级越高越不利于程序的调试,一般程序调试阶段会关闭优化等级,发布程序会把优化等级设为-O2。

-g:打印程序的调试信息,如果需要使用gdb工具进行调试程序,程序编译的时候,需要加上该参数。

-share:编译的时候尽量使用动态库。(除非只有静态库,没有动态库)

-static:禁止使用动态库,编译的时候只加载静态库,这会导致执行文件很大。

-w:不生成任何的警告信息。

-Wall:生成所有的警告信息。

-fpic:使输出的对象模块可重定位地址方式生成的。

-shared:把对应的源文件生成对应的动态链接库。

动态库的生成:

动态库,简称:动态链接库。只是在程序运行时,需要用到的api才会调用库里的函数。

生成:gcc fun.c -fpic-shared -o libfun.so

静态库的生成:

静态库,在程序编译时,会全部代码加载到可执行程序里。

生成:ar rcs libfunc.a fun.o

静态库和动态库的优却点:

1、相对来说,静态链接的可执行文件一般会比动态链接的可执行文件要大。

2、静态链接的可执行程序一般会比动态链接的可执行文件要快。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值