在Linux 下編譯連結多個原始檔
add.c 的內容
int Add(int a,int b)
{
int result;
result=a+b;
return result;
}
minus.c 的內容
int Minus(int a,int b)
{
int result;
result=a-b;
return result;
}
all.c的內容
#include<stdio.h>
int main(void)
{
int a=8;
int b=3;
printf("a=%d b=%d/n",a,b);
int sum=Add(a,b);
printf("a+b=%d/n",sum);
int cha=Minus(a,b);
printf("a-b=%d/n",cha);
return 0;
}
把三個檔案統一編譯連結 進行處理 有這麼幾種方法
1 單個檔案的編譯最後統一連結
gcc -c all.c
gcc -c add.c
gcc -c minus.c
最後生成的是三個.o檔案
gcc all.o add.o minus.o -o all 生成的是可執行檔案all
2 三個檔案一起編譯連結
gcc add.c minus.c all.c -o all 生成的是可執行檔案 all
3 先將add.c 和minus.c 生成.o檔案 再生成庫檔案 對all.c進行編譯連結
gcc -c add.c minus.c 生成.o檔案
ar rv libtest.a add.o minus.o 對.o檔案生成libtest.a 庫檔案,將這個庫檔案拷貝到/usr/lib目錄下,
gcc -o all all.c -ltest 對測試程式進行編譯連結
最後生成可執行檔案 all
這裡要注意的是生成的庫檔名字和後來編譯all.c時候使用的庫檔案要對應起來。上文中使用的是libtest.a 後面就使用-ltest。如果前面使用liball.a,後面就得使用-lall。 庫檔案的字尾暫時還是更改不了