在linux环境下静态库(.a)的编译和使用

一、静态库的概念

  • 库是预编译的目标文件(.o)的集合,它们可以被链接进程序。
  • 标准系统库可在目录/usr/lib与/lib中找到。比如,在类Unix系统中C语言的数序库一般存储为文件/usr/lib/libm.a。该库中函数的原型声明在头文件/usr/include/math.h中。
  • C标准库本身存储为/usr/lib/libc.a,它包含ANS1/ISO标准指定的函数,比如printf。对每一个C程序来说,libc.a都默认被链接。

二、生成静态库

假设我们自己编译一个加法程序,和打印程序。

//mylib.h
int myadd(int a, int b);
void myprint( int s);
//mylib.cpp
#include 
#include "mylib.h"
int myadd(int a, int b)
{
     return a + b;
}

void myprint( int s)
{
  std::cout << s << std::endl;
}

那么我们可以通过下面两个命令将这两个函数编译成静态库。

gcc -c mylib.cpp -o mylib.o //产生目标文件
ar rcv libmylib.a mylib.o //将目标文件打包成静态库

生成.o文件.PNG
生成静态库.PNG

三、如何使用静态库

1、C++如何使用C++编译的静态库

//test.cpp
#include 
#include "mylib.h"
int main()
{
    myprint(myadd(1,2));
    return 0;
}

那么我们可以通过下面的命令(任选一种)将main.cpp与静态库进行编译。

  • g++ -o main main.cpp -L. -lmylib
  • g++ -o main main.cpp libmylib.a
命令1.PNG
命令2.PNG

1、C如何使用C++编译的静态库

待后续补充

你可能感兴趣的:(在linux环境下静态库(.a)的编译和使用)