`
弄月吟风
  • 浏览: 196587 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Linux编译静态库和动态库

阅读更多

首先我们创建一个static_lib.c文件,内容如下:

 

int add(int a,int b)
{
return a+b;
}
int sub(int a,int b)
{
return a-b;
}

 然后在shell中编译该文件,生成一个重定位的目标文件如下:

gcc -c static_lib.c

 Linux下使用ar工具创建一个静态库,或者将目标文件加入到已经存在的静态库中

ar rcs 静态库名 目标文件1 目标文件2.....目标文件n

该命令表示将目标文件1-n加入到指定的静态库中。如果该静态库不存在,则创建静态库文件,并且将库文件的拓展名为.a ,其中ar工具的参数rcs起了至关重要的作用。这三个参数分别表示:把列表中的目标文件加入到静态库中(参数r)若指定的静态库不存在,则创建该库文件(参数c);最后更新静态库文件的索引,失之保函新加入的目标文件文件的内容(参数s)

现在需要使用刚刚生成的static.o目标文件创建一个静态库static_lib.a,其执行命令如下:

ar rcs static_lib.a static_lib.o

  然后你就能够在目录下看到你创建的静态库了

下面是使用静态库

在vi编辑器中编辑头文件static_lib.h如下:

 

extern int add(int a,int b);
extern int sub(int a,int b);

然后在vi编辑器中编辑使用库程序: main.c

 

#include<stdio.h>
#include"static_lib.h"
int main(){
printf("Please input a and b:");
scanf("%d%d",&a,&b);
printf("the add :%d\n",add(a,b));
printf("the sub :%d\n",sub(a,b));
return 0;
}

   然后使用命令:

 gcc main.c -static ./static_lib.a -o app 

动态库也很方便,编译命令是:gcc -shared -fPIC -o share_lib.so static_lib.c

使用时:gcc main.c ./ static_lib.so -o app

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics