Docker中桌面程序研发

news/2024/12/14 12:37:31/文章来源:https://www.cnblogs.com/quenwaz/p/18606559

由于经常工作的环境基本上是在Windows系统上, 如果需要研发一些Linux桌面程序就必须安装虚拟机, 然后在虚拟机中研发。 由于平时工作使用docker较多, 想想能不能使用docker进行桌面程序研发呢

要想做到这个也不复杂, 毕竟Linux有大名鼎鼎的X Window System(也称X11或X)。

X Window System介绍:

X Window System(通常简称为 X11)是一个用于在 UNIX 和类 UNIX 系统上管理图形用户界面(GUI)的窗口系统。X11 是最常见的开源窗口系统,它提供了基本的绘图和用户交互功能,使得用户能够在图形环境中运行应用程序。

X11 是基于CS架构的窗口系统。在这个架构中,X Server负责处理图形显示和输入设备(如键盘、鼠标)的事件,而应用程序则作为X Client与 X Server通信。

X11 使用网络协议来处理客户端和服务器之间的通信,这使得 X 客户端可以在本地或远程机器上运行,并通过网络连接到 X 服务器

常见的X Server:

  1. X.Org Server: X.Org Server 是当前最常用的 X 服务器,也是 X Window System 的标准实现。它支持多种 UNIX 和类 UNIX 系统。
  2. Xephyr: Xephyr 是一个轻量级的 X 服务器
  3. Wayland: Wayland 是一个现代的显示服务器协议,替代了传统的 X Window System,但它仍然可以通过 XWayland 兼容层运行 X11 应用程序。

常见的X Client:

  1. Terminal Emulators: 如 GNOME Terminal、Konsole、Xterm 等,用于在图形界面中打开终端窗口。
  2. Window Managers: 如 GNOME Shell、KDE Plasma、i3、Openbox 等,用于管理窗口、布局和桌面环境。
  3. Text Editors:如 gedit、Vim、Emacs 等,用于编辑文本文件的图形界面应用程序。

前置条件

  • docker
  • VcXsrv
  • vscode

环境搭建

  1. 首先在Windows上安装X Server, 笔者是安装的VcXsrv, 还有其他如Cygwin/XXming等。

  2. Linux 环境搭建

    拉取镜像:
    docker pull ubuntu:22.04

    启动容器:

    docker run -itd -e DISPLAY=host.docker.internal:0.0 -v /c/xxx:/mnt/xxx --name qttest ubuntu:22.04 /bin/bash

    关键是环境变量DISPLAY设置为宿主机ip及对应的参数。

    参数:0.0表示x client应该在对应服务的x server的第几号server的第几号screen.间隔。 启动x server时可以看到该参数。

    安装ca-certificates: apt update && apt install ca-certificates

    更新为清华源: 打开ubuntu清华源, 找到对应版本替换到/etc/apt.source.list中, 记得备份。 最后apt update

    安装XCB:

    Xlib 是一个常见的用于编写 X Client程序的库,它提供了一组函数和工具,使开发者可以方便地与 X Server通信。

    XCB 库被设计为 Xlib 的替代品,XCB 提供了更好的性能和扩展性

    apt install libxcb-*

  3. QT环境安装

    直接在清华镜像下载qt-unified-linux-x64-online.run在线安装包, 通过挂载目录复制到Linux下,执行安装。

    安装过程中出现如下错误及解决办法:

    error while loading shared libraries: libxkbcommon-x11.so.0: cannot open shared object file: No such file or directory

    apt-get install libxkbcommon-x11-0

    error while loading shared libraries: libxcb-xxx: cannot open shared object file: No such file or directory

    apt install libxcb-*

    error while loading shared libraries: libX11-xcb.so.1: cannot open shared object file: No such file or directory

    apt install libx11-xcb1

    error while loading shared libraries: libfreetype.so.6: cannot open shared object file: No such file or directory

    apt install libfreetype6

    error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory

    apt install libfontconfig1

    error while loading shared libraries: libdbus-1.so.3: cannot open shared object file: No such file or directory

    apt-get install libdbus-1-3

  4. vscode开始研发

    vscode 安装微软研发的 docker 插件,然后在侧边栏的docker页选择容器进行附加。新建cmake项目, 设置QT依赖:

    set(CMAKE_CXX_STANDARD 17)set(CMAKE_CXX_STANDARD_REQUIRED ON)set(CMAKE_AUTOUIC ON)set(CMAKE_AUTOMOC ON)set(CMAKE_AUTORCC ON)list(APPEND CMAKE_PREFIX_PATH  "/opt/Qt/5.15.2/gcc_64/lib/cmake" )find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets)file(GLOB SOURCES *.cpp *.cc *.hpp *.h) #  GLOB_RECURSEset(CMAKE_INCLUDE_CURRENT_DIR ON)add_executable(${PROJECT_NAME}  ${SOURCES})target_link_libraries(${PROJECT_NAME} Qt5::Widgets )
    

常见问题

  1. Failed to find "GL/gl.h" in "/usr/include/libdrm"

    apt install mesa-common-dev

    Mesa 是一个开源的图形库,提供了 OpenGL 和 Vulkan 的实现

  2. Could not load the Qt platform plugin "xcb"

    apt install libxcb-*

参考链接

  1. X Window System介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/852477.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-2025-1 20241329 《计算机基础与程序设计》第十二周学习总结

作业信息 作业归属课程:2024-2025-1-计算机基础与程序设计 作业要求:2024-2025-1计算机基础与程序设计第十二周作业 作业目标:《C语言程序设计》第11章 作业正文:2024-2025-1 20241329 《计算机基础与程序设计》第十二周学习总结 教材学习内容总结 《C语言程序设计》第11章…

四六级规则及策略

四六级规则:1写作,2听力,3阅读和翻译满分710,加权后425分(也就是分数到百分之60)及格。加权,就是英语最后成绩不仅取决于卷面分还取决于在参考人群中的排名 策略: 先section C再翻译,最后section B。section A随便蒙。

阅记-横向优化-CA-《HPC-一文彻底搞懂并发编程与内存屏障》intel

目录Momory Ordering9.2.3.2 Neither Loads Nor Stores Are Reordered9.2.3.3 Stores Are Not Reordered With Earlier Loads9.2.3.4 Loads May Be Reordered with Earlier Stores (intel x64架构下唯一会有memory reorder的情况)内存屏障的实现 参考:HPC(高性能计算第一篇):一…

阅记-横向优化-底层架构-《HPC-一文彻底搞懂并发编程与内存屏障》

目录Momory Ordering9.2.3.2 Neither Loads Nor Stores Are Reordered9.2.3.3 Stores Are Not Reordered With Earlier Loads9.2.3.4 Loads May Be Reordered with Earlier Stores (intel x64架构下唯一会有memory reorder的情况)内存屏障的实现 参考:HPC(高性能计算第一篇):一…

2024-2025-1 20241322 《计算机基础与程序设计》第十二周学习总结

2024-2025-1 20241322 《计算机基础与程序设计》第十二周学习总结 作业信息这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK12这个作业的目标 《C语言程序设计》第11章作业…

20222415 2024-2025-1 《网络与系统攻防技术》实验七实验报告

1.实验内容 1.实验内容 (1)简单应用SET工具建立冒名网站 (2)ettercap DNS spoof (3)结合应用两种技术,用DNS spoof引导特定访问到冒名网站。 2.实验过程 (1)简单应用SET工具建立冒名网站 systemctl start apache2开启apache2服务,然后输入setoolkit,进入set工具后选…

网站修改费,网站维护和更新的费用如何计算

网站修改费用因项目复杂度和工作量而异。一般考虑以下因素:工作量:根据修改内容的多少和难度评估工作量。 时间成本:根据开发人员的小时费率计算总费用。 技术难度:涉及复杂功能或特殊技术的项目费用较高。 维护周期:长期维护合同通常会有优惠。 客户需求:根据客户的具体…

修改网站图片内容,网站图片管理技巧

修改网站图片内容通常涉及上传新图片和更新HTML或CSS文件,以下是一些具体步骤:上传新图片:将新图片文件上传到网站服务器,通常放在 images 文件夹中。 记下新图片的路径,例如 /images/new-image.jpg。修改HTML文件:打开网站的HTML文件,找到需要替换的图片的 <img>…

记录我的第一份实习-猎头

以下是本人自2024-10-15日入职wisest talent至11-30日的一些记录,历时正正好1个半月 累计300+电话量,日均10+电话数,简历阅览量保守估计2200+ 推荐总数:55位面试总数:29位入职总数:3位开票业绩:20w+以上当然并不光是自身努力的结果,更多的还是经过几位相当优秀的leader…

在线进制转换-浮点数16进制转换

在线进制转换工具;浮点数转16进制;分享一个在线进制转换工具,浮点数转十六进制得在线转换工具; 网址:https://www.bais.top/tools/hexconvert/ 浮点数转16进制在线转换网址 float转十六进制; 在线10进制转16进制;使用很方便,能够进行多种进制转换;

firemonkey主界面

firemonkey主界面firemonkey主界面 本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/18606484