C/C++:静态链接库和目标文件有什么区别?

前端之家收集整理的这篇文章主要介绍了C/C++:静态链接库和目标文件有什么区别?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道编译时包含在可执行文件中的代码可以来自目标文件(.o文件)和静态链接库(.lib / .a文件).从根本上和概念上讲这两者之间的区别是什么?为什么“目标代码”和“静态链接库”之间存在不同的概念?每种方法的优点和缺点是什么,为什么使用一种而不是另一种?可以从目标文件中创建静态链接库,反之亦然,可以从静态链接库中创建目标文件吗?

解决方法

目标文件是编译但未链接代码.库包含目标文件.因此,你的问题变成了,“如果我只能使用目标文件,为什么要使用静态链接的库?”这就是原因.

与一组对象(每个对象都有自己的符号表)不同,库有一个统一的符号表,当库开发人员使用s开关调用ar时创建该符号表. s调用ranlib为该存档中的所有对象创建统一符号表.

shell中运行ranlib显示在帮助文本的第一行:

Generate an index to speed access to archives.

从通用ranlib docs

An archive with such an index speeds up linking to the library and
allows routines in the library to call each other without regard to
their placement in the archive. T

另见FreeBSD ranlib docs – 不同的措辞,相同的想法:联系速度.

猜你在找的C&C++相关文章