这种情况下很容易就能够看到软链指向的文件的版本号是 1.0.1
方法二:
当文件名不带版本号时:如下所示
使用readelf -a ***.so读取出文件的版本号,不过此时只能读取到主版本号,version:1
方法三:
如果文件名不带版本号,且又想知道具体的版本号的时候怎么办呢?
这时候只能使用傻瓜方法,生成md5值与已知版本号的共享库相对比了。
$ md5sum fcrypt.so.1.0.1
d097363e391e926fdd1687d17bb1ebf7 fcrypt.so.1.0.1
$ md5sum fcrypt.so
d097363e391e926fdd1687d17bb1ebf7 fcrypt.so
两个md5值一致,由此得出版本应该是1.0.1。
它们的具体区别并不算太大,只是链接后的不同,具体区别如下:
o:是编译的中间目标文件将多个中间目标文件,可以链接成可执行文件。
so:文件表示动态链接库。
a:代表的是静态函数库,当同时运行多个程序并且都使用到同一个函数库的函数时,内存中就会有同一函数的多份副本,会消耗大量宝贵的内存。
lo:使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息。
la:使用libtool编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)