目标文件和静态库(归档文件)有什么区别?

发布于 2024-11-11 07:00:23 字数 227 浏览 2 评论 0原文

似乎存档文件可以从目标文件生成:

ar rvs libprofile.a profile.o

目标文件和存档文件有什么区别?

在我看来,两者都可以直接与gcc一起使用,例如:

gcc *.c profile.ogcc *.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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

终难遇 2024-11-18 07:00:23

静态库是一个或多个目标文件的集合,带有索引以允许快速搜索。编译器处理它们的方式存在一些细微的差异。对于目标文件,您可以像这样链接:

gcc f1.o f2.o -o myexe

对于库,您也可以这样做:

gcc f1.o libf2.a -o myexe

或者您可以使用简写:

gcc d1.o -lf2 -L. -o myexe

此外,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:

gcc f1.o f2.o -o myexe

with libraries you can also do that:

gcc f1.o libf2.a -o myexe

or you can use shorthand:

gcc d1.o -lf2 -L. -o myexe

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文