我们在学习C语言时经常使用库函数,当时用起来是不是特别的方便呢,但是现在我们到了Linux的操作系统下,我们的一切命令都是通过指令,今天我们就来学习一下在Linux下如何建立相应的库并使用它。

一. 库的概念:

  1. 库就是预先编译好的方法的集合,我们常用的printf等就存在与我们的C库里面。C语言默认链接的就是C库,存放在/usr/lib目录下。

  2. 库我们可以分为静态库和动态库。

  • 静态库:形式为:lib.xx.a ,lib为固定的前缀,xx为库名,.a为特有后缀。它的特点是编译链接时把这个函数的代码复制进来,这样在无库的情况下代码也可以运行,但同时导致了消耗内存大。
  • 共享库:形式为:lib.xx.so,lib是固定前缀,xx为库名,.so为特有后缀。它的特点是编译链接时不把函数复制进来,只做个标记,在运行时才回去找,所以当库消失时则链接失败,但同时导致消耗内存小。

二. 库的制作:

  1. 静态库的制作:(xx为库名)
  • 将所有的.c文件变为.o文件
  • ar crv libxx.a 所有.o文件 //创建库
  • 写个xx.h头文件,里面内容是函数的声明
  • 写个mian.c,里面引用库的的头文件
  • gcc -o main main.c -L. -lxx//.L表示库当前所在的位置,-l.xx表示要找的库名
  • 或者将该库移动到/usr/lib目录下:
  • su//转换为root用户
  • mv libxx.a /usr/lib//移动库到指定的目录下
  • 再执行gcc -o main main.c -lxx
  • 这时./main即可以运行程序
  1. 共享库的制作:
  • 写实现函数的.c文件
  • 写个xx.h头文件,里面内容是函数的声明
  • gcc -shared -fPIC -o libxx.so 所有.c文件 //创建库
  • 写个mian.c
  • gcc -o main main.c -L. -lxx或 gcc -o main main.c 都会出错,因为它默认链接的是/usr/lib下的库,所以你必须把他移动到此目录下:
  • su//转换为root用户
  • mv libxx.so /usr/lib(你可以通过ldd来查看程序执行所用到的库是否链接)
  • 这时./main即可以运行程序

三. 演示
给大家说了这两种库的制作方法,有些人可能还不能完全的理解,没关系,我现在来给大家演示一下这个过程。(在这只演示静态库的办法,共享库和他的类似,只需要该指令就可以啦)
程序运行的环境是Linux环境,我们实现制作的库里面有两个函数,一个为max,一个为add,我们现在来看吧。
1.静态库的使用:

  • 首先我们呢打开Linux系统,我们进入命令行窗口,先创建两个普通文件,一个add.c向里面写入求两个数之和的算法,一个max.c向里面写入两个数比较的算法,如下图所示:
    Linux中库的建立和使用

  • 现在我们将所有的.c文件变为.o文件,用gcc -c add.cgcc -c max.c

  • 我们对静态库起名为cy11输入建立静态库的指令ar crv libcy11.a add.o max.o我们再写一个.h文件,将两个函数的声明写入,具体步骤如下图:
    -Linux中库的建立和使用
    这样就可以让程序运行了,还有一种把库放到程序自动链接的目录下,你们记得练习实现一下哦!
    加油!

相关文章:

  • 2021-09-05
  • 2021-09-24
  • 2021-10-14
  • 2021-12-10
  • 2022-12-23
  • 2022-01-21
  • 2021-04-18
  • 2021-12-16
猜你喜欢
  • 2021-10-31
  • 2021-12-15
  • 2022-12-23
  • 2022-12-23
  • 2021-11-03
  • 2021-04-08
  • 2021-11-17
相关资源
相似解决方案