• 静态库


    预备知识:

    1、头文件
    可以使用-I标志来包含保存在子目录或者非标准位置中的头文件,例如
    gcc -Iusr/openwin/include fred.c

    2、库文件

    仅仅把库文件放在标准目录中,就希望编译器能够找到它是不够的,库文件必须遵循特定的命名规范并且需要在命令行中明确指定。

    (1)、静态库
    也称作归档文件(archive),后缀名.a,
    例如:
    gcc -o fred fred.c /usr/lib/libm.a
    对源文件fred.c进行编译,将编译产生的文件命名为fred,并且引用libm.a库文件
    例如:
    gcc -o fred fred.c -lm
    -lm代表的是标准目录(本例是/usr/lib)内名为libm.a的函数库,-lm有一个好书是如果有共享库,编译器会自动选择共享库
    虽然库文件和头文件一样,一般都保存在标准位置,但你也可以通过使用-L标志位编译器增加库的搜索路径
    gcc -o x11fred -Lusr/openwin/lib x11fred.c -lx11
    这条命令用/openwin/lib下的libx11函数库来编译和链接程序x11fred

    (2)so代表共享库函数(动态链接库)
    3、归档命令ar

    4、静态库实验
    (1)建立源文件fred.c和bill.c

    //fred.c
    #include<stdio.h>
    void fred(int a)
    {
    printf("you passed %d\n", a);
    }

    //bill.c
    #include<stdio.h>
    void bill(char *arg)
    {
    printf("you passed %s\n", arg);
    }

    (2)编译生成目标文件
    gcc -c fred.c bill.c
    -c使编译器仅仅编译程序,不进行链接操作

    (3)编写头文件
    //lib.h
    void fred(int a);
    void bill(char *arg);

    (4)编写调用程序
    //main.c
    #include "lib.h"
    int main(void)
    {
    bill("hello");
    return 0;
    }

    (5)下面可以在一个步骤内完成编译和链接该程序的工作,也可以将编译和链接分开,下面是分开操作的
    gcc -c main.c
    gcc -o main main.o bill.o
    ./main
    输出 you passed hello

    (6)创建归档文件
    ar crv libf.a bill.o fred.o

    (7)使用库文件编译
    gcc -o main main.o libf.a
    或者
    gcc -o main -L. main.o -lf

  • 相关阅读:
    git连接远程分支
    如何找N个数中第i小的数
    DeconvNet
    深度学习中的Internal Convariate Shift (ICS)
    BA算法解决p-中位问题
    蚁群算法
    蝙蝠算法初探
    轨迹压缩之Douglas-Peucker算法之C++实现
    遗传算法---编程小试
    NYOJ 1000
  • 原文地址:https://www.cnblogs.com/zzj2/p/3008924.html
Copyright © 2020-2023  润新知