我们在日常远程linux服务器,运行代码时,可能会遇到需要程序显示图像的需求,如下面的代码:        

cv::imshow("frame", frame);

        这时如vscode,vs等IDE就会报错(若无提前配置X11转发功能)

        这时,我们就可以使用X11Forwarding功能

0. 抛出问题

        1. 什么是X协议

        2. 什么是X11Forwarding

        3. DISPLAY参数

        以上三个问题皆参考下面两篇文章

        理解X协议和X11Forwarding

        快速理解 X server, DISPLAY 与 X11 Forwarding

1. 配置vscode远程免密登录

        参考文章

2. 安装Xming与Xming fonts

        安装包网址:Xming
        安装包网址:Xming fonts

解释:

        在上面两篇参考文章我们可以看到,要使用X11Forwarding功能,需要Xserver与Xclient,其中Xclient就是我们的服务器,而Xserver则是我们手头的本地机。

        而Xming则是Windows平台上免费的X Server软件

        (Xming fonts目前还没搞懂,据说不安装会出问题,有懂得大佬欢迎在评论区指出)

        1. 安装步骤

                略。

        2. 运行

                1. 双击Xlanuch

                        

                2. 选择X server号码

                        

                                这里我使用的是0

                3. 无脑点击3次下一页,就启动了

                ​​​​​​​        

        ​​​​​​​        ​​​​​​​        

        ​​​​​​​        ​​​​​​​        

                4. 这时你的电脑右下角的状态栏,应该有个Xming的图标,这就表示在运行了

        ​​​​​​​        ​​​​​​​        

                                鼠标滞留在图标上,还会显示他的号码

3. 安装插件

           打开vscode(前提:已完成免密配置)

        

                搜索插件,X11

                其中上面的Remote X11(SSH)是本地安装

                下面的Remote X11是在服务器上安装(在本地的vscode上即可安装,上图中的Ubuntu_22是我的服务器名称)

4. 配置参数DISPLAY

        在终端输入 export DISPLAY=ip地址:0.0

        ip地址:为你的本地机地址

        0.0为上文中配置的服务器号码

        例:

        

        补充

                export 命令用于设置或显示环境变量,但仅本次登录有效,若想一劳永逸,则直接将此命令加入.bash_profile配置文件

su root        #首先切换root用户,防止权限不够

echo export DISPLAY=<ip地址>:<服务器号码>.<显示屏幕号码> >> /home/<服务器的用户名>/.bash_profile
                # 例 echo export DISPLAY=192.168.1.3:0.0 >> /home/ubuntu/.bash_profile

source /home/<服务器的用户名>/.bash_profile
                # 刷新配置文件,让起生效

5. 完成

        终端输入xclock测试

        

        显示图形化界面,成功!

其他问题

1. Warning: Missing charsets in String to FontSet conversion

解决措施

echo LC_ALL=C >> /home/<用户名>/.bash_profile
echo export LC_ALL >> /home/<用户名>/.bash_profile
source /home/<用户名>/.bash_profile

参考文章

理解X协议和X11Forwarding

快速理解 X server, DISPLAY 与 X11 Forwarding

Logo

2万人民币佣金等你来拿,中德社区发起者X.Lab,联合德国优秀企业对接开发项目,领取项目得佣金!!!

更多推荐