這個命令很靈活,格式是:
cc -o 目標二進制可執行文件 文件1 文件2 文件3 。。。。。
其中目標文件后面的文件,可為源代碼,也可為二進制文件,也可為庫文件
比如:
//a.c #include <stdio.h> #include "b.h" main(){ bb(); } //b.h int a; void bb(void); //b.c #include <stdio.h> #include "b.h" int a=4; void bb(){ printf("das%d\n",a); }
cc -c a.c;此命令生成a.o
cc -c b.c;此命令生成b.o
ar -crv libb.a b.o;此命令生成靜態庫文件
以下六中連接方式都是可以的,最終都生成了同樣的可執行文件a:
cc -o a a.c b.c
cc -o a a.c b.o
cc -c a a.o b.c
cc -o a a.o b.o
cc -o a a.c libb.a
cc -o a a.o libb.a
以上都是將庫文件直接復制到程序文件中,鏈接的文件既可以是.o文件,也可以是源代碼文件,但是有一點特殊的是,當我們生成動態庫的時候,就只能用源代碼文件去生成動態庫了,而不能用中間代碼.o文件去生成,舉個例子:
a.c是主程序源代碼,a.o是編譯后的二進制文件,生成動態庫文件libb.so用下面的命令
cc -shared -fPIC -o libb.so a.c
而不能用cc -shared -fPIC -o libb.so a.o
