linux 查询库版本,如何查找Linux计算机上安装了哪个版本的libstdc ++库?

我倾向于使用的机制是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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值