博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下的动态链接库和静态链接库到底是个什么鬼?(二)动态链接库的编译与使用...
阅读量:4340 次
发布时间:2019-06-07

本文共 1123 字,大约阅读时间需要 3 分钟。

    上一篇文章里讲解了linux下静态链接库的编译与使用,下面我们来聊聊动态链接库的编译与使用方法。

    所谓动态链接库,也就是说编译的时候不会真的把你引用到的库给编到你的执行程序里,而是在执行时候才会去加载相关的库,所有用到此库的程序可以共享一份代码,这样带来的好处是可执行程序所占的空间变小了,同时,如果库需要升级,你并不需要重新编译你的程序,只要把相关的库升级即可。

   接下来我们来看看动态链接库的编译与使用方法,代码还是和上文中的一样,分别为​sum.c, sum.h, 和main.c, 在linux下动态链接库文件一般叫做libxxx.so。

   

192:zch kane$ lsmain.c    sum.c    sum.h192:zch kane$ 192:zch kane$ gcc -c -fPIC sum.c                            ------  -fIPC告诉编译器将源代码编译成共享的object文件,PIC(Position-Independent Code)意思是非位置依赖性代码192:zch kane$ lsmain.c    sum.c    sum.h    sum.o192:zch kane$ gcc -shared -fPIC -o libsum.so sum.o           --------  生成动态链接库文件libsum.so192:zch kane$ lslibsum.so    main.c        sum.c        sum.h        sum.o192:zch kane$ 192:zch kane$ gcc -o sumappd main.c -L . -lsum               --------- 生成可执行程序192:zch kane$ lslibsum.so    sum.c        sum.omain.c        sum.h        sumappd192:zch kane$ ./sumappd                                      ---------运行生成结果Num1 + Num2 = 3

 ps:所以大家看到了,编译时”-lsum“的方式,是不能够区分当前是静态链接还是动态链接的。如果在同一个目录下同时有静态链接库和动态链接库,则系统默认会引用动态链接库,如果想使用静态链接库则需要在编译时加上”-static“参数(具体方法可自行百度)。

转载于:https://www.cnblogs.com/zhengchunhao/p/4886734.html

你可能感兴趣的文章
机器学习基石笔记2——在何时可以使用机器学习(2)
查看>>
POJ 3740 Easy Finding (DLX模板)
查看>>
MySQL 处理重复数据
查看>>
关于typedef的用法总结(转)
查看>>
【strtok()】——分割字符串
查看>>
Linux下安装rabbitmq
查看>>
曹德旺
查看>>
【转】判断点在多边形内(matlab)
查看>>
java基础之集合:List Set Map的概述以及使用场景
查看>>
Python 线程 进程 协程
查看>>
iOS语言中的KVO机制
查看>>
excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法
查看>>
响应式web设计之CSS3 Media Queries
查看>>
实验三
查看>>
机器码和字节码
查看>>
环形菜单的实现
查看>>
【解决Chrome浏览器和IE浏览器上传附件兼容的问题 -- Chrome关闭flash后,uploadify插件不可用的解决办法】...
查看>>
34 帧动画
查看>>
二次剩余及欧拉准则
查看>>
thymeleaf 自定义标签
查看>>