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

时间:2011-05-30 14:25:25

标签: object archive

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

ar rvs libprofile.a profile.o

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

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

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

有什么区别?

1 个答案:

答案 0 :(得分:14)

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

gcc f1.o f2.o -o myexe

使用库也可以这样做:

gcc f1.o libf2.a -o myexe

或者您可以使用速记:

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

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