静态库
产生库: 写若干个c文件(函数或者全局变量,不应有main),编译(gcc -c ...),
打包成库(ar -r libxxx.a若干个.o),写一个.h文件(函数或者全局变量的声明)
产生可执行文件
写c程序,#include库的头文件,可以使用库里面的函数和变量,gcc libxxx.a c程序文件,
或者gcc -lxxx -L库文件所在的目录 c程序文件,或者设置环境变量LIBRARY_PATH值为库文件所在目录从 而省略-L选项。
执行可执行文件:执行可执行文件
动态库
产生库:写若干个c文件(函数或者全局变量,不应有main),
gcc [-fpic] -shared -o libxxx.so ...(若干个c程序文件),
产生可执行文件:
写c程序(#include库的头文件,可以使用库中的函数和变量),
gcc -lxxx -L库文件所在目录 c程序文件,
或者设置环境变量LIBARAY_PATH的值为库文件所在目录从而省略-L选项 。
执行可执行文件:
先把库文件复制到/lib或者/usr/lib目录下或者设置环境变量LD_LIBRARY_PATH值作为库文件所在目录,再执行可执行文件。
~/.bashrc
PATH=$PATH:.
export LIBRARY_PATH=$LIBRARY_PATH:库文件目录
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:动态库文件目录
nm:查看动态库中的文件
升级库:把“产生库”的过程重复一遍。如果是动态库,可执行文件会自动使用新库,如果是静态库,还需要重复“产生可执行文件”的过程,新的可执行文件使用的才是新库。