關於cc -o命令


這個命令很靈活,格式是:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM