美文网首页程序员Android NDK
如何生成以及链接静态库

如何生成以及链接静态库

作者: 凌烟醉卧 | 来源:发表于2019-09-30 22:50 被阅读0次

这篇文章讲解了如何生成静态库,以及如何与静态库链接。

了解如何生成以及链接静态库,需要对gcc/g++有所了解,这里提供一些资料
交叉编译必知--gcc/g++详细讲解

在演示之前,准备3个文件,分别为ctest1.c,ctest2.c和prog.c。

ctest1.c文件

void ctest1(int *i)
{
   *i=5;
}

ctest2.c文件

void ctest2(int *i)
{
   *i=100;
}

prog.c文件

#include <stdio.h>
void ctest1(int *);
void ctest2(int *);

int main()
{
   int x;
   ctest1(&x);
   printf("Valx=%d\n",x);

   return 0;
}

我们的目的是将ctest1.c和ctest2.c文件打包成.a库,然后让prog这个文件链接到.a这个库。

1.执行编译

cc -Wall -c ctest1.c ctest2.c 

会生成2个文件:ctest1.o ctest2.o

2.创建生成库

ar -cvq libctest.a ctest1.o ctest2.o

生成静态文件使用ar,这里生成的静态文件为libctest.a

3.列出库中的文件

ar -t libctest.a

ctest1.o ctest2.o

4.与库链接

有两种方式可以与库链接
cc -o 可执行文件名称 prog.c libctest.a
cc -o 可执行文件名称 prog.c -L/path/to/library-directory -lctest

这里使用第二种,因为这个库不是放在系统默认的目录下的

cc -o prog prog.c -L/home/cuiboye/test -lctest

执行prog这个可执行程序,可以看到输出

Valx=5

至此,我们成功的将C文件编译成了.a静态库,以及其它的文件链接这个.a静态库。

相关文章

  • 如何生成以及链接静态库

    这篇文章讲解了如何生成静态库,以及如何与静态库链接。 了解如何生成以及链接静态库,需要对gcc/g++有所了解,这...

  • Linux链接库

    动态链接库(共享链接库) 杂项 生成.o文件 生成.so 使用动态库 静态链接库 杂项 生成.a 查看.a 使用静态库

  • 生成以及链接动态库

    这篇文章讲解了如何生成动态库,以及如何与动态库链接。 了解如何生成以及链接动态库,需要对gcc/g++有所了解,这...

  • 静态链接库

    如何创建静态链接库 vs新建项目,选择静态链接库 在项目文件中新建 .cpp 文件与.h 文件 项目编译生成后会产...

  • linux下静态库 动态库和 gcc gdb Makefile

    一、静态库和动态库 定义 根据链接时期的不同,库有静态库和动态库之分。 静态库是在链接阶段被链接的,所以生成的可执...

  • 链接静态库生成可执行文件

    链接静态库.a生成可执行文件 操作文件夹:链接静态库.a文件 在生成test.o文件时,需要有TestExampl...

  • c语言第四讲 动态库、静态库

    静态库和动态库的生成 静态库 静态库就是一些目标文件的集合,一般以.a结尾,使用于生成可执行文件阶段。链接器将库文...

  • 静态库的用法.a和frameWork

    静态库的生成,我将分为两种来讲,.a静态库和.frameWork静态库。 一、如何生成.a文件 1>. 模拟器4s...

  • iOS静态库及动态库

    2018-06-19 浅析静态库链接原理编译原理以及什么是静态库和动态库 转之: iOS 静态库和动态库(库详解)...

  • APP编译及加载过程

    编译过程 静态库&动态库 一.静态库在链接阶段,会将会将汇编生成的目标文件与引用的库一起链接打包到可执行文件中。二...

网友评论

    本文标题:如何生成以及链接静态库

    本文链接:https://www.haomeiwen.com/subject/nmbhpctx.html