美文网首页程序员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静态库。

    相关文章

      网友评论

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

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