静态链接和动态链接

 我来答
华源网络
2022-07-20 · TA获得超过5581个赞
知道小有建树答主
回答量:2486
采纳率:100%
帮助的人:145万
展开全部

将一组可重定位目标文件链接到可执行文件里

静态库里一般一个目标文件只包含一个信态函数 ,链接器在链接静态库时以 目标文件为单位 ,如果很多函数都放在同一个目标文件中,会导致很多未使用的函数都被一起链接到可执行文件里

把链接过程推迟到运行时进行

程序被装载时, 动态链接器 会把程序所需要的所有动态链接库装载到进程的地址空间,并将程序中所有未决议的符号绑定到相应的动态链接库中,并进行 重定位工作

如果同一路径下存在同名的动态库和静态库,例如libtest.so和libtest.a都在同一路径下,则gcc会优先链接动态库

链接多个静态库时要考虑依赖问题滑庆源,链接动态库时要考虑路径问题

动态库链接成功后,执行可执行文件时,出差渗现 error while loading shared libraries: libxxx.so: cannot open shared object file: No such file or directory

Linux通过 /etc/ld.so.cache 文件搜寻要链接的动态库,而 /etc/ld.so.cache 是 ldconfig 命令读取 /etc/ld.so.conf 文件生成的,如果使用的动态库不在该文件配置的路径下,就会导致程序执行时无法找到需要的动态链接库

两种解决方法

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式