Linux 静态库与动态库生成步骤
生成动态库:
#首先,生成带有PIC选项的.o文件
gcc -fPIC -c *.c -I ../include
#将.o文件打包为动态库
gcc -shared -o libDynamic.so *.o
生静态库:
#首先,生成普通的.o文件
gcc -c *.c -I ../include
#生成静态库
ar rcs libStatic.a *.o
优缺点
静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库(方便移植)
动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。(能够被多进程使用,大大节省内存和磁盘空间)
相关简单使用方法
动态库
gcc main.c -L. -lmyhello
-L. 代表动态库在当前路径下;-l后面跟的是动态链接库的名字( 与静态一样,可以舍去前缀lib和后缀.so)
静态库
gcc -o hello main.c -I/user/local/include -L/user/local/lib -lmyhello
-I是指定该静态库头文件所在路径, -L 是指定该静态库库文件所在路径,"-lmyhello"表示的是要使用的静态库文件的名字