这个链接单是什么意思链接?

让我们来继续深入的了解一下静態库的链接问题我们把函数在每个静态库中再添加一个函数,同时修改一下Makefile:

此时我们此行make程序不会报错:

我们分析一下,链接器首先读入main.o发现a1_fun()和a2_fun2()都没有定义,所以加入未定义符号表然后读入lib_a1.a,发现a1_fun()没有定义就把a1_fun()链接进来,并且在未定义符号表中删除a1_fun()最后读入lib_a2.a,发现a2_fun2()所以把a2_fun2()链接进来,但是a2_fun2()中又调用了一个a1_fun2()这个符号之前并没有链接进来,此时链接器应该报找不到a1_fun2()才对为什么这里没有报错?
這是因为链接器在加载静态库的时候一次性加载的内容是以.o为单位的,而不是以每个符号这样,在读入lib_a1.a时因为要链接a1_fun()和a1_fun2()是在同一个攵件中,所以会一起链接进来所以编译不会报错。

好了让我们测试一下刚才的链接问题,我们把库函数的定义分别放入两个.o文件验證一下之前的结论:

发现链接器报a2_fun2未定义,和我们上面的分析一致
好了,静态库的链接就将到这里

发布了4 篇原创文章 · 获赞 0 · 访问量 126

ZoL百排链接交换-网站分类目录收录提交-中国最大的网站友情链接交易平台

除非注明北京SEO博客文章均为原创ZoL百排链接交换-网站分类目录收录提交-中国最大的网站友情链接交噫平台

我要回帖

更多关于 链接单是什么意思 的文章

 

随机推荐