千家信息网

如何理解Linux系统下连接器ld链接顺序

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"如何理解Linux系统下连接器ld链接顺序",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何理解Linux系统下连接器ld链接顺序"吧!
千家信息网最后更新 2026年11月01日如何理解Linux系统下连接器ld链接顺序

本篇内容主要讲解"如何理解Linux系统下连接器ld链接顺序",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何理解Linux系统下连接器ld链接顺序"吧!

  原来ld对于链接一系列的库的顺序是很敏感的,不然会报undefined referenced 的函数符号错误,意思就是未找到函数定义。实际上库是能正确打开的。如果库libA.a依赖于库libB.a,那么连接器的参数应该ln -lA -lB, 必须这样写。不然就会错误。

  这个看来是历史的遗留问题。说白了就是,如果你确定某个库不重要,就放到最后,也就是说,库的加载顺序是按顺序进行的,从左到右,优先级最高,这也是远古时代机器太破的原因,内在和硬盘包括CPU都是极其稀罕珍贵的。所以要你提前搞定哪些需要哪些不需要,一旦需要,就加载上去,不需要就不要加载上去。这样就可以解释上面的错误了,编译器加载到socketcomm后,发现还有依赖库,再往后找,木有咧,于是就错了。

  也就是说,被依赖的尽量放到后面,让大家可以共用。

  这就引申同来了另外一个问题,如果有多个库,使用了相同的函数名或者类名,结构体名称会怎么样?

  可以使用nm和readelf、ldd等命令来查看你的库的依赖和符号表以及导出的函数符号等。这样就可以来验证上面的因为顺序造成的不同的编译结果。

  把测试的库分成动、动;静、静;动静三种情况。

  第一种情况:静静库都包含有相同的名字函数

代码如下:

  gcc -L./ main.c -lA -lB

  编译报错,在multiple definition of `XXX‘。重复定义函数。

  第二种情况:动动库

  这个得看加载的顺序,上面说过,从左开始,按需加载。

代码如下:

  gcc main.c ./libB.so ./libA.so

代码如下:

  gcc main.c ./libA.so ./libB.so

  这样的链接方式为隐式链接,或者说加载时链接,而前面的静态库为编译时连接。

  也就是说,编译的顺序确定到底调用哪个库中的同名函数。

  第三种情况:动动,但是是动态加载,而不上面的静态加载。

代码如下:

  gcc main.c -ldl ./libA.so ./libB.so

代码如下:

  gcc main.c -ldl ./libB.so ./libA.so

  没有加链接选项时,跟第二种情况一样。加了L选项后,指定哪上加载哪个。

  libB为静态链接!, libA为动态加载.

代码如下:

  gcc -L./ main.c -ldl –lB

  动态库的库名显示的加载入编译选项中

代码如下:

  gcc -L./ main.c -ldl -lB ./libA.so

代码如下:

  gcc -L./ main.c -ldl ./libA.so -lB

到此,相信大家对"如何理解Linux系统下连接器ld链接顺序"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

链接 顺序 代码 函数 编译 情况 连接器 系统 也就是 也就是说 动态 符号 错误 静态 面的 相同 内容 实际 就是 问题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京路客互联网科技有限公司 科技企业和互联网企业 美国互联网科技巨头监管 没上市的科技互联网公司 互联网医疗科技 易互联网科技有限公司 奇酷互联网络科技 碳银互联网科技 广西拼得多互联网科技有限公司 云创客互联网科技公司 剑昆互联网络科技有限公司临桂 厦门千工互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 科技类公司包括互联网吗 华夏恒生互联网科技013171 科技赋能视角下互联网保险发展 济南有互联网科技公司吗 中天科技中国工业互联网 悟空问答互联网科技 玉溪新华互联网科技怎么选 广州淘业互联网络科技 互联网科技未来 高科技与互联网 互联网科技咨询 盛创互联网科技有限公司 昭通云南众福互联网科技有限公司 东莞新华互联网科技学校 山东大美朱楼互联网科技有限公司 深圳互联网科技园地址 互联网科技快速发展优美句子
0