1. 程式人生 > >在Linux 下編譯連結多個原始檔

在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。  庫檔案的字尾暫時還是更改不了