linux中静态库编译与使用

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 静态库

你可能感兴趣的:(Ubuntu系统,linux,静态库,编译,连接,应用程序)