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应用程序。
静态库与动态库的区别:
静态库是在编译时连接到应用程序,此时会增加应用程序的大小,导致生成的应用程序都很大,
动态库是在运行时连接到应用程序,不会增加应用程序的大小,应用程序的大小一般都很小。