Linux 16.04启动TuringBot出现gdk_display_get_primary_monitor报错求助
报错根因
gdk_display_get_primary_monitor 是GTK3 3.22版本新增的API,Ubuntu 16.04 官方软件仓库已停止大版本迭代,仅推送安全补丁,因此哪怕执行你之前试过的sudo apt-get update和sudo apt-get upgrade操作,系统内置的GTK3版本最高也仅能升级到3.20,远低于TuringBot编译时依赖的GTK版本,最终触发符号未定义的启动报错。
修复方案
方案1:定向补装适配版本的GTK3依赖(低系统侵入)
- 添加提供高版本GTK3的PPA源:
sudo add-apt-repository ppa:gnome3-team/gnome3-stagingsudo apt-get update - 仅升级GTK3相关核心库,避免全量升级引发的系统依赖冲突:
sudo apt-get install --only-upgrade libgtk-3-0 libgdk-3-0 - 升级完成后验证版本,确认GTK3版本达到3.22及以上:
dpkg -l | grep libgtk-3-0 - 重新启动TuringBot验证即可。
方案2:定向加载便携版GTK3(完全不改动系统依赖)
如果添加PPA后出现其他系统组件的依赖冲突,可通过动态库路径定向加载的方式规避:
- 下载与自身CPU架构匹配的GTK3 3.22+便携包,解压到用户私有目录(例如
~/gtk3-libs) - 启动TuringBot时手动指定动态库加载路径,不修改系统全局环境变量:
LD_LIBRARY_PATH=~/gtk3-libs/lib ./TuringBot - 可将上述命令写入自定义启动脚本,替换原本直接执行
./TuringBot的启动方式。
注意事项
- 不要强行将Ubuntu 16.04的源替换为更高版本系统的源做全量升级,会引发大量系统依赖崩坏的问题。
- 若使用ARM架构的设备,需下载对应架构的GTK3库文件,不可混用x86架构的二进制动态库。
内容的提问来源于stack exchange,提问作者philgun
相关产品推荐
相关产品推荐

