【发布时间】:2011-09-04 20:54:08
【问题描述】:
似乎可以从目标文件生成存档文件:
ar rvs libprofile.a profile.o
目标文件和归档文件有什么区别?
在我看来两者都可以直接与 gcc 一起使用,例如:
gcc *.c profile.o 或 gcc *.c libprofile.a
有什么区别?
【问题讨论】:
似乎可以从目标文件生成存档文件:
ar rvs libprofile.a profile.o
目标文件和归档文件有什么区别?
在我看来两者都可以直接与 gcc 一起使用,例如:
gcc *.c profile.o 或 gcc *.c libprofile.a
有什么区别?
【问题讨论】:
静态库是一个或多个目标文件的集合,具有允许快速搜索的索引。编译器处理它们的方式有一些细微差别。使用对象文件,您可以像这样链接:
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,对吧?