概述
我倾向于使用的机制是6.0.10608组合以从libstdc ++转储-V信息,然后使用查找表匹配提取的最大2560843864705860660610值。
readelf -sV /usr/lib/libstdc++.so.6 | sed -n 's/.*@@GLIBCXX_//p' | sort -u -V | tail -1
如果您的6.0.10版本太旧而无法使用-V选项(按版本号排序),则可以使用:
tr '.' ' ' | sort -nu -t ' ' -k 1 -k 2 -k 3 -k 4 | tr ' ' '.'
而不是6.0.10,最多可以按4个版本数字进行排序。
通常,匹配ABI版本应该足够好。
但是,如果您要查找2560843864705860860608,则可以使用一些bash,例如:
file=/usr/lib/libstdc++.so.6
while [ -h $file ]; do file=$(ls -l $file | sed -n 's/.*-> //p'); done
echo ${file#*.so.}
因此,对于我的系统而言,结果为6.0.10。
但是,如果您尝试获取在systemX上编译以在systemY上运行的二进制文件,那么到目前为止,这些事情只会使您感到困惑。 在这些情况下,请携带用于该应用程序的libstdc ++。so副本,然后拥有一个执行脚本,该脚本执行以下操作:
export LD_LIBRARY_PATH=
exec application.bin "$@"
通常可以解决.so的问题,该问题与应用程序的版本不兼容。 对于更极端的环境差异,我倾向于只添加所有依赖库,直到应用程序正常运行为止。 这是linux的等效解决方案,对于Windows,将被认为是dll hell。
最后
以上就是诚心冥王星为你收集整理的linux 查询库版本,如何查找Linux计算机上安装了哪个版本的libstdc ++库?的全部内容,希望文章能够帮你解决linux 查询库版本,如何查找Linux计算机上安装了哪个版本的libstdc ++库?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复