【问题标题】:What's the difference between object file and static library(archive file)?目标文件和静态库(存档文件)有什么区别?
【发布时间】:2011-09-04 20:54:08
【问题描述】:

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

ar rvs libprofile.a profile.o

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

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

gcc *.c profile.ogcc *.c libprofile.a

有什么区别?

【问题讨论】:

标签: object archive


【解决方案1】:

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

gcc f1.o f2.o -o myexe

使用库,您也可以这样做:

gcc f1.o libf2.a -o myexe

或者你可以使用速记:

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

此外,gcc 将始终链接 .o 文件,但如果仍有未定义的名称需要解析,它只会搜索库并从中链接。

【讨论】:

  • 巴特沃斯,但是gcc可以交替使用它们,或者至少在使用.o的地方,也可以使用.a,对吧?
  • 是的,但正如我所指出的,用法可能略有不同。
猜你喜欢
  • 2013-04-25
  • 2010-11-10
  • 2021-08-29
  • 1970-01-01
  • 2011-06-28
  • 2020-08-19
  • 2012-07-24
  • 2010-10-29
  • 1970-01-01
相关资源
最近更新 更多