一般为了不让他人看到源码,也为了维护,我们常把源码封装成一个一个的库,而库有静态库和动态库之分(根据链接时期的不同进行区分),静态库在编译的时候会被连接到目标代码中去,程序运行时不需要该库存在就能运行;动态库在编译时并不会被连接到目标代码中去,而是在程序运行过程中才载入,此时动态库必须存在。
YYY.c -lXXX -L.就可以在编译其他程序时把库包含进来,编译好后,运行程序时(./YYY.out),可能提示库XXX找不到,这是因为程序运行时在/lib、/usr/lib等默认路径或LD_LIBRARY_PATH环境变量中查找,而没有找到的缘故,此时可以把库复制到/lib或/usr/lib目录下,也可以设置LD_LIBRARY_PATH环境变量,或者把当前路径加入
/etc/ld.so.conf中然后运行ldconfig等方法来解决该路径问题。
r libXXX.a XXX.o生成libXXX.a静态库文件,使用gcc YYY.c -lXXX
-L. -static -o YYY.static就可以在编译其他程序时把库包含进来,编译好后,直接运行./YYY.static就可以,不用管库存不存在。