似乎存档文件可以从目标文件中生成:
ar rvs libprofile.a profile.o
目标文件和存档文件之间有什么区别?
在我看来,两者都可以直接与gcc一起使用,例如:
gcc *.c profile.o
或gcc *.c libprofile.a
有什么区别?
答案 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文件,但如果还有未定义的名称仍有待解决,它只会搜索库并从中链接。