linux下面.so库文件的链接

之前在对第三方库升级的时候,从第三方获得了新的.so文件,文件名和之前用到的完全一样。

但是在调用的时候总是找不到库,后来发现是.so文件的版本和之前的版本不对应(多个厂商不同版本)

所以可以通过以下的命令检查:

sudo readelf -d /lib64/libtesofacecv-living.so | grep libtesofacecv-living

0x000000000000000e (SONAME)             Library soname: [libtesofacecv-living.so.3]

sudo readelf -d /lib64/libtesofacecv-living.so | grep libtesofacecv-living

0x000000000000000e (SONAME)             Library soname: [libtesofacecv-living.so.1]

注:

linux下面是通过soname去找到实际的库文件。 查看链接的是哪个版本的库文件可以对文件进行确定

大版本不兼容,小版本向下兼容

如果你在编译的时候用的.so.3的版本,那如果第三方安装了.so.1的版本文件,那么是找不到的。所以在这种多个第三方厂商一起开发的时候,要提前确认大版本号。在每一次大版本更新要同步修改。

另外linux下面Qt代码中可能用到bash命令。可以通过类似下面的代码获得结果

QProcess process; 

process.start("lshal -u computer -l");

process.waitForFinished();   

QByteArray output = process.readAllStandardOutput();

QString str_output = output;

qDebug()<<output;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值