libQt5Core.so.5: version Qt_5.9 not found
完整错误如下
$ ./sscom
./sscom: /usr/lib/qt5lib/libQt5Core.so.5: version `Qt_5.9' not found (required by ./sscom)
./sscom: /usr/lib/qt5lib/libQt5Core.so.5: version `Qt_5.9' not found (required by /usr/lib/x86_64-linux-gnu/libQt5SerialPort.so.5)
在14.04还能运行,到18.04上已经不能支持了,编译是成功了的。但是运行不起来。遇到这种错误是比较恼火的,看字面意思是libQt5Core.so.5
中并不包含5.9
,那就可能是5.8
以下的,我换下去看看。
$ readelf -s /usr/lib/qt5lib/libQt5Core.so.5
5633: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS Qt_5.0
5634: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS Qt_5.1
5638: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS Qt_5.2
5639: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS Qt_5.3
5645: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS Qt_5.4
5648: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS Qt_5.5
5652: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS Qt_5.6
5657: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS Qt_5.7
5663: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS Qt_5.8
...
还真就猜测对了,只到5.8
。default也不好使了,18.04自带的libQt5SerialPort.so.5
使用的是Qt5.9而自带的Qt库却只支持5.8以下,类似生活中的鞋不合脚了,也可能Ubuntu官方的开发者没有人测试到这个问题。继续看看其他libQt5Core.so.5
是否支持到5.9
。
$ locate libQt5Core.so.5
结果
/usr/lib/qt5lib/libQt5Core.so.5
/usr/lib/qt5lib/libQt5Core.so.5.8
/usr/lib/qt5lib/libQt5Core.so.5.8.0
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.9
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.9.5
也不用使用readelf
就可以查到最新版本的库。使用/usr/lib/x86_64-linux-gnu/
就可以了。
最终的解决方案如下:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH
再运行,就不报错了
./sscom