PC终端执行开发板上的图形界面程序时出错:Gtk-WARNING **: cannot open display:
来源:互联网 发布:朱文臣 的网络与 编辑:程序博客网 时间:2024/05/16 03:14
场景
root@NanoPi2:/home/fa/Documents/opencv-demo# ./demo (edges:1685): Gtk-WARNING **: cannot open display:
按照网上说明添加display如下:
root@NanoPi2:/home/fa/Documents/opencv-demo# export DISPLAY=:0.0root@NanoPi2:/home/fa/Documents/opencv-demo# ./demo No protocol specified(edges:1671): Gtk-WARNING **: cannot open display: :0.0
加xhost +
之类的也没用。后来参考此篇说法明白了原因:
因为Xserver默认情况下不允许别的用户的图形程序的图形显示在当前屏幕上. 如果需要别的用户的图形显示在当前屏幕上, 则应以当前登陆的用户, 也就是切换身份前的用户执行如下命令。
因此,我直接切换到当前图形界面的用户下,执行程序是OK的,
root@NanoPi2:/home/fa/Documents/opencv-demo# su faroot@NanoPi2:/home/fa/Documents/opencv-demo# ./demook starting demo
按上述说法,在此账户下输入如下命令:
fa@NanoPi2:~/Documents/opencv-demo$ xhost +access control disabled, clients can connect from any hostfa@NanoPi2:~/Documents/opencv-demo$ su rootPassword: root@NanoPi2:/home/fa/Documents/opencv-demo# ./demo ok starting demo
在转回root用户下也可执行了。试了下如下:
root@NanoPi2:/home/fa/Documents/opencv-demo# su fafa@NanoPi2:~/Documents/opencv-demo$ xhost -access control enabled, only authorized clients can connect
综上所述:在当前图形界面的账户里如果你使能了access control功能,那么只有允许了的用户才能启动GUI程序显示到当前的屏幕,否则由于无法显示而启动失败。
总结
参考文章:Linux在远程X Server上显示图形界面
- 一、远程的X Server
X Window System由客户端和服务端组成,服务端X Server负责图形显示,而客户端库**X
Client**根据系统设置的DISPLAY环境变量,将图形显示请求发送给相应的X Server。
X Server是Gnome等桌面环境的基础,一个桌面环境通常包含了XDM(X Display Manager,通常的图形化用户登录界面就属于XDM)、窗口管理器(X Server显示的图形是没有“窗口”边框的,通过替换窗口管理器可以实现不同的视觉效果,比如实现3D效果的Compiz)等组件。进行图形显示并不需要桌面环境,只要有X Server即可。
依上述说明:
首先要在远程要显示图形的机子(简称图形机)上打开X erver服务。两种方法启动:startx和xinit,命令参数一样的
startx [ [ client ] options ... ] [ -- [ server ] [ display ] options ... ]eg: xinit /usr/bin/xterm -- :1 &
选项分为两个部分,以符号 “–”为界,前面是客户端选项,后面是X Server选项。客户端程序必须是绝对路径(
/usr/bin/xterm
),如果一个客户端也没有,X sever就会自行退出,所以开机时默认会启动一个客户端。服务端默认X :0
display:用于设置客户端远程连接该图形服务器的DISPLAY名称
启动完成后查看进程可看到/usr/bin/Xorg :0 -nr -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-Ikd3i7/database -nolisten tcp vt1
授权远程机访问X server
xhost [[+-]name ...]
直接
xhost +
允许所有访问,xhost -
禁止所有访问,xhost可以查询当前访问列表信息在客户端配置显示机
指定在哪个图形机上显示通用环境变量DISPLAY指定,格式如下:export DISPLAY = [Address]:{NumA}.{NumB}
其中Address为X Server地址,如果Address为空,则通过域套接字连接到本地的X Server。
NumA为display number,这与传递给xinit的display选项对应,这个display number为X Server的监听端口号送去6000。因此,实际上此时B机器上的X Server在监听6001端口,可以使用netstat命令验证。
NumB为screen number(可能是多显示器的情况下指定显示在哪个显示器,未验证),通常情况下都为0.
- 二、SSH隧道转发
图形机上的SSH服务开启了X11转发功能。
配置文件/etc/ssh/sshd_config
中X11Forwarding yes
在ssh远程登录时加上-X选项如下:
ssh -X 192.168.9.135
启动一个图形程序测试下。
- PC终端执行开发板上的图形界面程序时出错:Gtk-WARNING **: cannot open display:
- Gtk-WARNING **: cannot open display: :0.0的问题
- Gtk-WARNING **: cannot open display问题的解决
- Gtk-WARNING **: cannot open display问题的解决
- Gtk-WARNING **: cannot open display: :0.0
- Gtk-WARNING : cannot open display----这个问题在NVIDIA TX2上碰到过就是DISPLAY=":0"
- Gtk-WARNING **: cannot open display: :0.0之解决
- sudo gedit 错误:Gtk-WARNING **: cannot open display: :0.0
- wireshark:7116): Gtk-WARNING **: cannot open display: :0.0解决方法
- git push 提示Gtk-WARNING **: cannot open display:
- (gnome-ssh-askpass:24029): Gtk-WARNING **: cannot open display:
- (gedit:14333): Gtk-WARNING **: cannot open display: :0.0
- linux Gdk-WARNING **: cannot open display,提升图形界面权限
- Linux中gedit遇到如下问题时解决方法No protocol specified (gedit:9143): Gtk-WARNING **: cannot open display: :0.
- 使用gedit出现No protocol specified (gedit:14333): Gtk-WARNING **: cannot open display: :0.0
- centos5.5启动eclipse报错Gtk-WARNING **: cannot open display: :0.0
- 【备忘】Debian打开wireshark出现Gtk-WARNING **: cannot open display: :0解决方案
- linux git 错误403 Forbidden while accessing和Gtk-WARNING **: cannot open display:
- linux内核参数
- SpringBoot-JUnit
- 拒绝服务攻击与周边
- 8.2.1.7 Use of Index Extensions 使用索引扩展
- windows,linux下SVN实现自动更新WEB目录
- PC终端执行开发板上的图形界面程序时出错:Gtk-WARNING **: cannot open display:
- 【JAVA】JAVA线程及锁基础知识-niyuelin
- 从0开始学习 GitHub 系列之「02.加入 GitHub」
- Scala面向对象彻底精通及Spark源码阅读
- Android Priority Job Queue (Job Manager):后台线程任务结果传回前台(三)
- STM32 串口发送接收 带奇偶检验
- Unity脚本编程一:脚本,事件,组件
- maven 导入eclipse项目自动构建配置
- ROS工具roswtf