C语言 之 编译自己的lib库

编译和链接是不同的,编译时不需要找到对应的库文件,链接时才需要。链接时它也不找,而是采取如下办法:
1. 把所有需要的库中的符号都载入内存(这里需要的库是工程里设置好的,而不是根据头文件变化而变化的)
2. 链接时如果需要一个函数,链接程序会到步骤1中的符号表中找,并进行定位。
所以无论在哪个库文件中,只要你在工程中指定它为需要的库,则链接程序都会载入它的符号到符号表。要找到需要的函数,不需要知道它在哪个库文件中,只要符号表有即可。

因此库是必须指定的,在link的时候链接上,或者说,你直接编译出.obj文件就足够了,实际上,只要你编译成功,就没必要编译成lib文件。唯一的好处是减少编译时间。。。或者不希望别人看到源代码,link是一样link的。

生成静态动态库一般是通过工程选择库项目实现的。在Windows下推荐用IDE构建项目来生成和引用,在Linux下则往往写makefile来生成。

生成动态库还有点用。

每日小常识:

Linux下中间文件是.o,而Windows是.obj

Linux下静态库是.a,Windows下是.lib

Linux下动态库是.so,Windows下是.dll

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值