英创公司ESM7000 是面向工业领域的双核 Cortex-A7 高性能嵌入式主板,ESM6800E则为单核Cortex-A7 高性价比嵌入式主板,ESM7000、ESM6800E都是公司的成熟产品,已广泛应用于工业很多领域。ESM7000/6800E板卡中Linux系统配置为linux-4.9.11内核、预装X11桌面系统,并支持Qt-5.8。
VNC(Virtual Network Computing),为一种使用RFB协议的屏幕画面分享及远程操作软件。此软件借由网络,可发送键盘与鼠标的动作及即时的屏幕画面。通过VNC可实现远程桌面控制功能,在实际应用中给用户带来很多方便。
X11VNC是一款基于X Window的VNC服务器程序,为此我们在ESM7000/6800E上移植了该软件包,以支持远程桌面的功能。
X11VNC移植
先用git获取libvncserver和x11vnc。 x11vnc是基于libvncserver的服务端程序。
#> git clone https://github.com/LibVNC/libvncserver
#> git clone https://github.com/LibVNC/x11vnc
参考其中的README说明,用ESM7000的交叉编译工具链进行编译。在编译的过程中先编译libvncserver,然后x11vnc。
libvncserver 编译
# mkdir build
# cd build
# cmake ..
# cmake --build .
libvncserver编译完成后,需要将相应的库文件和头文件复制到交叉编译的环境中,才能进行后续x11vnc的编译,如:
cp libvncserver.so* ../../toolchain/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/.
cp libvncclient.so* ../../toolchain/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/.
cp libvnc*.pc …/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/lib/pkgconfig/.
cp -r include/rfb ../../toolchain/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/.
x11vnc的编译
#>./configure –host=arm-poky-linux –prefix=/home/zhl/esm7000/vnc
#>make
#>make install
编译完成后,将相应的库文件以及x11vnc程序复制到目标板上即可。
库文件包括libvncserver*.so libvncclient*.so,注意启动x11vnc还需要用到libavahi-client.so.3
利用VNC Veiwer实现远程连接
启动vnc服务器,在ESM7000板卡上直接运行x11vnc程序即可,如:
#>x11vnc
客户端远程访问的PC机可以是Ubuntu系统也可以用Windows,安装上对应的VNC Viewer程序即可。这里我们是在Windows PC机器上,使用RealVNC Viewer软件,输入正确的IP地址后连接ESM7000的远程桌面。
可通过鼠标和键盘来操作远程桌面,以下分别启动了一个Qt程序和一个终端界面程序。
X11VNC服务器程序将自动包含在英创公司后续提供的ESM7000/6800E板卡中,对于现有的客户感兴趣可和英创公司联系,索取相应的软件更新包。