linux静态库:一些.o文件的压缩包
二进制.o文件通过ar命令:ar crv libfoo.a a.o b.o
通过ranlib命令跟新符号表:ranlib libfoo.a
在链接的时候通过-L指定.a文件的位置,-l命令指定库的名称,如-lxx代表使用libxx.a库.静态库默认打包进可执行文件中的,当删除.a文件,可执行文件依旧可以执行。
linux动态库:可执行程序仅在运行需要调用时才会将将动态库载入内存,本身不包含动态库的内容。
通过gcc -shared -fPCI -o libxx.so xx.c来生成.so文件
在使用.so文件的时候,-lxx来指定动态库,一般是会在系统默认路径找,没找到会报错
配置:将路径加入LD_LIBARY_PATH,或者/etc/ld.so.conf文件,加入目录,然后ldconfig命令就可以完成加载
一般会有版本问题,用libxx.so链接文件来解决需要指定的版本。
一般系统会搜索是否有动态库,有就使用动态库,没有才使用静态库,强制使用静态库,可以在-lxx前加入-static开关