查看日志报错,需要定位到具体的so是否存在问题
usr/bin/lightdm-deepin-greeter: symbol lookup error: /usr/bin/lightdm-deepin-greeter: undefined symbol: _ZN8KWayland6Client11DDEKeyboard10keyChangedEjNS1_8KeyStateEj
日志中提示/usr/bin/lightdm-deepin-greeter文件缺少符号_ZN8KWayland6Client11DDEKeyboard10keyChangedEjNS1_8KeyStateEj
如何通过符号定位到so文件,最终定位到具体的包呢?
下面一步步操作:
1、使用ldd命令
# ldd /usr/bin/lightdm-deepin-greeter
会返回很多的so文件,通过这些可以减少工作量,不用全部去比对
将这些so文件全都追加到文件中,方便阅读使用
# ldd /usr/bin/lightdm-deepin-greeter | awk -F "=>" '{print $1}' > ~/ldd.txt
2、获取so文件的符号内容
通过命令objdump -T
获取内容
for i in `cat ldd.txt`;
do
objdump -T /usr/lib64/$i >> objdump.txt
done
查看具体的函数信息
grep -n _ZN8KWayland6Client11DDEKeyboard10keyChangedEjNS1_8KeyStateEj objtest.txt
通过上面的命令中,可以确认具体的so文件,加入这里是libKF5WaylandClient.so.999
确认包具体是哪个
yum provides /usr/lib/libKF5WaylandClient.so.999
就可以看到具体的rpm包,剩下就是安装rpm包,将so文件成功引入,问题就解决了