基于云班课作业的共享库和静态库测试的创建和调用过程

首先需要明确什么是共享库和静态库

静态库:

静态库(.a):程序在编译链接的时候把库代码链接到可执行文件中

共享库:

共享库(.so或者.sa):程序在运行的时候才去链接共享库的代码,多个程序共享使用库的代码

本质上来讲,老师在上课时提到,静态库的代码链接方法是没调用一次复制一次,这个在下面具体过程中可以得到验证。而动态库的调用过程并没有复制过程,也就是没有这种缺陷。

 

创建共享库并调用的过程

首先根据代码,需要创建四个.c文件,分别是add.c,sub.c,div.c,mul.c,相关代码如下

 

 

类似的“+,-,*,/”

 

head.h

 

 

 

 之后有了这些代码,我们首先需要利用命令将其打包为 .so文件

之后运行命令

gcc -c -Wall -Werror -fPIC add.c,sub.c,mul.c,div.c
gcc -shared -o libshared.so add.o,sub.o,mul.o,div.o

其中第一条编译命令将源代码编译成共享库需要得位置无关代码;第二条编译命令则真正的创建了共享库

之后第一条命令运行后无反应,第二条命令后运行ls应有一下文件 libshared.so即为我们所获得的共享库

 

 

 

 

之后运行命令

gcc -L./ -Wall main.c -o main -lshared

 

成功后会获得 main可执行文件

 

 

 

 

 

 以上即创建调用共享库的过程

 

创建静态库并调用过程

前面的步骤大体相同

执行命令

  • 编译生成目标文件
  • gcc -c hello.c -wall
  • 创建静态库hello
  • ar crs libhello.a hello.o
  • 查看库中符号信息
  • nm libhello.a

成功截图

 

 

 

 生成文件 libhello.a

之后运行命令

gcc -o test test.c -L. -lhello

编译并链接

 

之后按照要求,不给别人代码

先利用cd命令切换到指定路径

 

之后可以利用rm 命令进行删除.o和.c文件

 

输入命令

 

 

并且将打包后的动态库和静态库发送给别人

posted on 2022-11-30 15:22  20221307  阅读(49)  评论(0编辑  收藏  举报

导航