linux上.so文件可以直接运行吗

linux上.so文件可以直接运行吗,第1张

so文件不可以直接运行的,so文件是动态函数库文件,函数库文件(包括.a文件和.so文件)只能用来被调用运行,不能直接运行的,so文件就相当于Windows下的dll文件,dll文件就是不能直接运行的。

方法一:

文件名已经带有版本号

这种情况下很容易就能够看到软链指向的文件的版本号是 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编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6055579.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-13
下一篇 2023-03-13

发表评论

登录后才能评论

评论列表(0条)

保存