我是 C 库新手,我正在创建一个不允许使用 libtool
的项目。
我尝试在网上查找,但一切要么 super 困惑,要么只是如何制作,没有任何解释。
我有几个问题:
.a
库只是.o
文件的集合吗?- 使用
ar -rc
与libtool
有什么区别? - 当链接器链接库时,它会链接整个
.a
文件还是仅链接它需要的部分?
最佳答案
Q: Are .a libraries just a collection of .o files?
答:基本上是的。
目标文件需要以特定的 archive library format 进行组织。链接器将无法使用存档除非它识别该格式。因此需要“ar”和“libtool”等工具。
Q: When the linker goes to link a library does it link the whole .a file or just the part it needs?*
答:只有实际需要的目标代码才会被物理添加到可执行镜像中。
Q: What is the difference between using ar -rc vs libtool?
“ar”自 Unix 诞生之初就已存在;早在“动态库”被发明(对于 *nix)之前,在 Linus Torvalds 想到 Linux 之前,或者在 Gnu 存在之前。 “libtool”是一个 Gnu 工具,支持动态和静态库,并且具有许多超出基本“ar”功能的功能。
关于c - 使用 `ar -rc` 与 libtool 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71729766/