您的位置:首页 > 运维架构 > Linux

Linux下编译链接多个源文件

2012-09-19 15:08 120 查看
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。  库文件的后缀暂时还是更改不了

参考来源: http://blog.csdn.net/gc315630/article/details/4530440
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: