linux下动态与静态链接库的使用及区别

1.为什么要有链接库

我们平时在写C代码时一定会经常重复写某些很多程序中都经常用到的代码,比方说字符串的简单操作函数,或者链表等。那么我们如何能避免老是重复的去写这些基础的代码呢?也许你会不假思索的想到把这些常用的函数装到一个头文件里,调用的时候只要include该头文件不就可以么。的确这样做是可以达到目的,但是如果我们把许多种不同功能的操作代码(可以理解为一个函数)都放在一个头文件下,数量少了还好,如果数量有几十甚至上百时,这么多功能不同的函数组合在一个头文件里,我想也许这个头文件只会你一个人去看它,因为其他人根本不知道里面写的是啥。此时你又会想,将这写函数按功能装在不同的头文件里不就解决了上述问题。问题到这足以证明你有一颗灵活的大脑,哈哈。但话说回来我们一般都在头文件里只定义函数,函数的具体实现都会另起一个文件里去实现
例如:
我们在hello.h中定义如下

#ifndef HELLO_H
#define HELLO_H
//此函数功能实现打印Hello xxx
void hello(char *s);
#endif

然后我们另起一个名为hello.c的文件用于实现hello函数

void hello(char *s)
{
    printf("Hello %s\n",s);
}

之所以规范要把头文件定义的函数和实现分离,主要原因是供使用头文件的人阅读起头文件来简单且方便。因为可能使用你头文件的人根本不关心你的某个函数内部是如何如何用了几千行代码实现的某个功能,它只关心某个函数是用来干什么的如何来传参数使用就足够了,所以如果你把头文件中的函数和实现放在一起的话,如果函数实现就几行还可接受,如果它的实现代码量特别大的话,显然会对于上述使用者看头文件带来一定的复杂度,而且这样写我想你的代码结构也不会很好。到这里我想我已把为什么要用头文件以及为什么要把头文件里的函数和实现分文件写说清楚明了了。既然上述方法已实现了我们刚开始讨论的遇到的问题,那么为什么还要谈动态或静态链接库呢?
对此我们在回到上述头文件与其函数分开实现在不同文件的问题,我们可以想想一下假如我们的一个主程序中用到了超过10自己实现的.h文件,那么对应就会有10个.c文件,此时你会如何编译
如果你是新手你也许会这样吧

gcc main.c 1.
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值