目标文件和静态库(归档文件)有什么区别?
似乎存档文件可以从目标文件生成:
ar rvs libprofile.a profile.o
目标文件和存档文件有什么区别?
在我看来,两者都可以直接与gcc一起使用,例如:
gcc *.c profile.o
或 gcc *.c libprofile.a
有什么区别?
Seems archive file can be generated from object file:
ar rvs libprofile.a profile.o
What's the difference between object file and archive file?
It seems to me that both can be used with gcc directly,e.g.:
gcc *.c profile.o
or gcc *.c libprofile.a
What's the difference?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
静态库是一个或多个目标文件的集合,带有索引以允许快速搜索。编译器处理它们的方式存在一些细微的差异。对于目标文件,您可以像这样链接:
对于库,您也可以这样做:
或者您可以使用简写:
此外,gcc 将始终链接 .o 文件,但它只会搜索库并从它们链接,如果仍然存在未定义的名称解决。
The static library is a collection of one or more object files, with an index to allow rapid searching. There are some minor differences in how the compiler deals with them. With an object file you link like this:
with libraries you can also do that:
or you can use shorthand:
Also, gcc will ALWAYS link .o files, but it will only search libraries and link from them if there are undefined names still to resolve.