linux中静态库编译与使用

本文介绍了在Linux环境中如何创建和使用静态库(.a文件)与动态库(.so文件)。详细讲解了从源文件生成目标文件,再通过ar命令打包成静态库的过程,以及在链接阶段如何使用静态库生成最终的应用程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux中静态库.a文件与windows下的静态库.lib文件的使用原理是一样的,都是在程序编译连接时使用,而非像动态库那样在运行时使用。

目录

1 静态库的编译

2 静态库的连接


1 静态库的编译

linux中静态库编译首先需要先生成目标文件,如需要将a.cpp b.cpp c.cpp三个文件夹编译生成一个静态库,首先需要将这三个文件生成.o目标文件,编译器使用g++,命令如下:

g++ -o a.o b.o c.o -c a.cpp b.cpp c.cpp 

上面命令中"-c"表示编译,编译a.cpp b.cpp c.cpp 三个源文件,生成a.o b.o c.o三个目标文件。然后使用ar命令生成静态库.a文件,命令如下:

ar cr libtest.a a.o b.o c.o

上面的命令中cr表示在生成静态库前先删除原来老的.a文件,ar表示将多个.o转换成.a,成为静态库。注意:生成的静态库命名方式为libxxx.a形式,其中xxx为静态库的名称。动态库的命名方式为libxxx.so形式,其中xxx为动态库的名称,这是linux库名称的命名规范。

2 静态库的连接

连接静态库生成应用程序,命令与连接动态库类似:

g++ main.cpp -L./ -ltest -o main

上面"-L./"表示:连接当前目录下面的libtest库文件,命令表示编译main.cpp文件并连接当前目录下的libtest.a静态库生成一个名字为main应用程序。

静态库与动态库的区别:

静态库是在编译时连接到应用程序,此时会增加应用程序的大小,导致生成的应用程序都很大,

动态库是在运行时连接到应用程序,不会增加应用程序的大小,应用程序的大小一般都很小。

参考文章:

Linux下gcc生成和使用静态库和动态库详解_清霜之辰的博客-CSDN博客_linux生成动态库

Linux环境下静态库的生成和使用 (.a文件)_cloud-2014的博客-CSDN博客_linux 静态库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三月微暖寻春笋

赠人玫瑰手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值