在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 <iostream>
#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 <iostream>
#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++编译的静态库

待后续补充

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,724评论 0 3
  • 1.什么是库在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被...
    鹰击司马阅读 1,132评论 0 2
  • 动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过...
    小5筒阅读 5,564评论 0 3
  • 一年一度的端午节,以前都是妈妈或者婆婆忙前忙后的准备食物,今年没有人帮忙,我自己来。 昨天提前准备好了蔬菜...
    兰欣生命之旅阅读 408评论 0 0
  • 晚安 愿你的梦里有我 在街角的橱窗旁 捧着玫瑰花 等你
    言良阅读 413评论 0 0