Linux中的版本号

一、动态库的版本号

libxxx.so.x.y.z:动态库必须以lib开头,xxx为其库名,so表示其是动态库,x是主版本号,y是次版本号,z是发布版本。
主版本之间不做兼容性要求
次版本和发布版本需要互相兼容。

二、FHS中的动态库

FHS相关科普
/lib:系统启动时需要的库和一些非常重要的库如C语言库,动态链接库(),数学库等。
/usr/lib:开发时用到的共享库。
/usr/local/lib:第三方应用程序的库,如python。

三、共享库的搜索

默认路径:/lib,/usr/lib,/etc/ld.so.conf配置的路径。这些默认的路径通过运行ldconfig程序会生成ld.so.cache文件。查找动态库时会通过ld.so.cache文件加速。
环境变量-LD_LIBRARY_PATH:可配置应用程序搜索共享库的路径。
环境变量-LD_PRELOAD:应用程序启动前必然会加载该路径下的动态库,无论应用程序是否依赖。
环境变量-LD_DEBUG:打开动态链接器的调试功能,输出链接时的日志。
加载的优先级:LD_PRELOAD > LD_LIBRARY_PATH > /ect/ld.so.conf配置的路径 > /usr/lib > /lib。

四、共享库的加载

共享库可创建构造函数和析构函数文件,分别在加载和卸载动态库时调用。通过attribute((constructor))将函数指定为共享库的构造或析构函数。

你可能感兴趣的:(Linux中的版本号)