假设有这样一个命令:
g++ main.o somefile.o -lc -o main
链接目标文件somefile.o和链接库libc.a有什么区别?
以“.a”结尾的文件是归档文件,它们基本上包含一组“.o”文件。因此,假设“libc.a”包含“c1.o”,“c2.o”和“c3.o”,你的命令基本上相当于解压“libc.a”,然后调用:
g++ main.o somefile.o c1.o c2.o c3.o -o main
.a
不是一种压缩格式。它的组成部分只是“未归档”的。 - Fred Foo.a
文件,其中包含可选模块,以便链接器找出实际需要哪些模块并简化构建脚本(显然会牺牲速度)。 - Fred Foo
libc6.so
通过-lc
进行链接,并在运行时完全链接。另请参阅 http://tldp.org/HOWTO/Program-Library-HOWTO/。 - Basile Starynkevitch