1.Linux库的概念
库是一种软件组建技术,库里面封装了数据和函数,提供给用户程序调用。库的使用可以使程序模块化,提高程序的编译速度,实现代码重用,使程序易于升级。2.静态库的创建和使用
(1)在一个头文件中声明静态库所导出的函数。以下通过实例来说明如何创建和使用静态库。mylib.h中存放的是静态库提供给用户使用的函数的声明,mylib.c实现了mylib.h中声明的函数。
3.示例代码
//mylib.h #ifndef _MYLIB_H_ #define _MYLIB_H_ void welcome(); void outstring(const char *str); #endif
mylib.c(函数的实现)
//mylib.c #include"mylib.h" #include<stdio.h> void welcome() { printf("Welcome to libmylib\n"); } void outstring(const char * str) { if(str!=NULL) printf("%s",str); }
//#include"mylib.h" #include<stdio.h> int main() { printf("create and use library!\n"); welcome(); outstring("It's successful!\n"); }
(1).编译生成mylib.c的目标文件
gcc -o mylib.o -c mylib.c
(2).将目标文件加入到静态库中,静态库为libmylib.a
ar rcs libmylib.a mylib.o (也可以向libmylib.a中加入其他多个目标文件,生成目标文件和mylib.o方法相同)
(3).将静态路拷贝到Linux库目录下(/usr/lib)
cp myliblib.a /usr/lib/libmylib.a (提示权限不够的可以试试sudo cp myliblib.a /usr/lib/libmylib.a)
(4).接下来就使用test.c测试静态库
gcc test.c -o test -lmylib
在编译test.c生成可执行程序使,必须加入静态库。
注意:“-lmylib”中-l为选项,mylib为库名。mylib是“libmylib.a”的中间部分,Linux下约定所有库都以前缀lib开始,静态库以.a结尾,动态库以.so结尾。在编译的时候无需加入前缀与后缀。
(5).运行test
./test
(6).运行结果:
pc@ubuntu:~/linux_lan/lib_test$ ./test
create and use library!
Welcome to libmylib
It's successful!