Linux程序设计:一、入门(创建自己的静态库)

项目文件最终的树目录,生成目标程序后,可以删除中间文件
 

note:静态库以lib开头 ,比如mylib.a
静态库缺点:很多程序使用一个函数库的函数时,会产生很多个副本。
共享库.so可以解决此问题。

  1. 创建自己的函数,放在不同的头文件中,只定义不声明,并用gcc编译
    //addAnimal.c
    #include <stdio.h>
    void addAnimal(char *arg)
    {
        printf("add animal: %s\n", arg);
    }
    
    //addFlower.c
    #include <stdio.h>
    void addFlower(char *arg)
    {
        printf("add flower: %s\n", arg);
    }

    gcc -c addAnimal.c addFlower.c,生成.o文件,用于库文件的归档

  2. 创建包含所有函数声明的头文件(libmy.h)

    //libmy.h
    void addAnimal(char *);
    void addFlower(char *);

    用于项目的调用,包含此头文件即可使用其中的函数

  3. 利用ar命令归档
    ar crv lib.a addAnimal.o addFlower.o

  4. 编译目标程序并链接头文件和库目录

    //createMyWorld.c
    #include <stdlib.h>
    #include <stdio.h>
    #include "libmy.h"
    
    int main()
    {
        printf("start build my world:\n");
        addAnimal("pig");
        addFlower("rose");
        exit(0);
    }

    gcc createMyWorld.c -o createMyWorld -I./mylib/  -L./mylib -lmy
    note:-I加入非标准头文件路径,-L加入非标准库目录, -lmy利用-l命令搜索libmy静态库,注意一定不能使用libmy.a会提示找不到

猜你喜欢

转载自blog.csdn.net/vict_wang/article/details/84989858