龙空技术网

Linux动态库和静态库教程

Bluesky66 347

前言:

此时我们对“linux动态库的动态链接与静态链接”大约比较关怀,你们都想要剖析一些“linux动态库的动态链接与静态链接”的相关资讯。那么小编也在网上收集了一些有关“linux动态库的动态链接与静态链接””的相关文章,希望各位老铁们能喜欢,咱们快快来了解一下吧!

本教程以Ubuntu16.04系统为例,实验涉及的程序文件有:xyhcal.c,add.c,sub.c,mul.c,xyhcal.h,这五个文件的源代码如图1所示:

图1 源代码示意图

Linux动态库具体实现步骤如下:

1. 将add.c,sub.c,mul.c文件编译为.o文件(不链接),使用gcc -fPIC -c命令操作,具体实现如下:

实例:gcc -fPIC -c add.c -o add.o

gcc -fPIC -c sub.c -o sub.o

gcc -fPIC -c mul.c -o mul.o

实现过程如图2所示:

图2 命令实现

2. 将add.c,sub.c,mul.c文件生成的.o文件编译为动态库,具体命令实现如下:gcc -shared -Wl,-soname,libmycal.so.1 -o libmycal.so.1.1 add.o sub.o mul.o。

命令实现如图3所示:

图3 命令实现过程

3. 添加动态库并编译xyhcal.c程序

命令实现:gcc xyhcal.c libxyhcal.so.1.1 -o xyhcal,如图4所示:

图4 命令实现

4. 用ldd查看xyhcal程序是否缺少动态库链接路径,命令实现如图5所示:

图5 命令实现

5. 添加动态库路径,用sudo vim /etc/ld.so.conf命令文件,添加/home/xyh/xyhcal目录。实现如图6,图7所示:

图6 命令输入

图7 链接路径添加

6. 更新生效ld.so.conf文件,Shell终端输入命令sudo ldconfig -v,实现如图8所示:

图8 更新ld.so.conf文件

7. 运行程序./xyhcal,命令实现如图9所示:

图9 运行程序结果

Linux静态库具体实现步骤如下:

1. 将add.c,sub.c,mul.c文件编译为.o文件(不链接),使用gcc -fPIC -c命令操作,具体实现如下:

实例:gcc -fPIC -c add.c -o add.o

gcc -fPIC -c sub.c -o sub.o

gcc -fPIC -c mul.c -o mul.o

实现过程如图10所示:

图10 命令实现

2. 将生成的.o文件编译为静态库

命令实现:ar src libxyhcal.a add.o sub.o mul.o,结果如图11所示:

图11 命令实现

3. 编译xyhcal.c文件,如图12所示:

图12 命令实现

4. 运行程序xyhcal程序,结果如图13所示:

图13 命令实现

标签: #linux动态库的动态链接与静态链接 #ubuntu 动态库链接传递 #linux静态库和共享库 #静态库和动态库ubuntu