Linux环境下静态库的生成和使用 (.a文件)

您所在的位置:网站首页 静态文件的扩展名是什么 Linux环境下静态库的生成和使用 (.a文件)

Linux环境下静态库的生成和使用 (.a文件)

2024-06-05 13:51| 来源: 网络整理| 查看: 265

linux操作系统中: 1.静态库是一些目标文件(后缀名为.o)的集合体而已。 2.静态库的后缀名是.a,对应于windows操作系统的后缀名为.lib的静态库。 3.可以使用ar命令来创建一个静态库文件。 来看一个实例,根据书中的代码简化的,先看一看可以编译成库文件的源文件中的代码:

[cpp]  view plain  copy  print ? /*  test.c  */   int f()    {     return 3;   }  

代码非常简单,只有一句话。我们敲入如下命令: gcc –c test.c ar cr libtest.a test.o 会在当前目录下生成一个libtest.a静态库文件。-c表示只编译,不链接。再来看一看如何使用这个库。如下代码:

[cpp]  view plain  copy  print ? /*  app.c   */   #include    extern int f();   int main()    {     printf(“return value is %d\n”,f());     return 0;   }  

敲入如下命令: gcc –c app.c gcc -o app app.o -L. –ltest 敲命令的时候要记得将libtest.a文件和生成的app.o文件放在同一个目录(即当前目录)下。这样,敲入命令后,会在当前目录下生成一个名为app的可执行文件。-o表示指定输出文件名。执行一下./app,可以看一看结果: 这就是生成linux下面静态库的简单用法了。

编译Linux使用的.a库文件

 

首先是需要编译成.a的源文件

 

hello.h:

[objc]  view plain  copy  print ? 在CODE上查看代码片 派生到我的代码片 #ifndef __INCLUDE_HELLO_H__   #define __INCLUDE_HELLO_H__      void hello(const charchar *name);         #endif // end __INCLUDE_HELLO_H__  

hello.c

[objc]  view plain  copy  print ? 在CODE上查看代码片 派生到我的代码片 #include "stdio.h"         void hello(const charchar *name)   {       printf("Hello world %s\n", name);   }  

和一个在linux平台上做测试的main.c

[objc]  view plain  copy  print ? 在CODE上查看代码片 派生到我的代码片 #include "hello.h"         int main()   {       hello("everyone");              return 0;   }  

在Linux上面做测试,编译成.a文件,主要利用.o文件和ar命令

1、首先生成.o文件:

gcc -c hello.c

这样源代码的目录下就会产生一个hello.o

2、利用ar命令,从.o文件中创建.a文件

ar cr libhello.a hello.o

这样就可以生成.a文件了,注意,所要生成的.a文件的名字前三位最好是lib,否则在链接的时候,就可能导致找不到这个库

3、在linux下测试使用

编译main.c,并让hello.a链接到main中

gcc main.c -L. -lhello -o main(注意这里-L后面有个.)

这样在当面目录下面就出现了可执行程序main,直接运行就是我们索要的结果了



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3