V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
WangLiCha
V2EX  ›  程序员

要做 Linux 桌面开发了,需要点什么准备知识?

  •  1
     
  •   WangLiCha · 2024-04-29 17:53:29 +08:00 · 4006 次点击
    这是一个创建于 375 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司新业务需求需要做一点国产化开发,所以需要开发一点 Linux 桌面程序,因为可能涉及到一些系统 API 的交互运用,所以技术栈初步选定了 Qt 。

    之前的 Linux 的了解仅限于为了搭服务器学过一点基础的 shell 命令,涉及的桌面的完全不熟悉,应该看点哪方面的资料比较合适?

    顺带问一下,因为之前是 Windows 开发所以基本习惯在 Windows 下用 Visual Studio ,但是现在要转向做 Linux 桌面程序的话是不是最好还是需要一个真实的 Linux 环境然后在上面做开发工作? Linux 上不同的桌面环境(据我所知有什么 KDE ,GNOME 之类的)上开发软件有区别吗?

    第 1 条附言  ·  2024-04-30 10:34:28 +08:00
    开发的时候是用实机比较好还是用虚拟机就可以?
    昨天做了个 Deepin 的 Linux To Go 想插 U 盘开发试试水,没想到卡的要死根本没法正常用
    28 条回复    2024-05-06 16:21:51 +08:00
    jstony
        1
    jstony  
       2024-04-29 17:56:27 +08:00
    没事,你可以考虑继续用 windows 下的 visual studio code ,支持 remote ssh dev 。
    debuggerx
        2
    debuggerx  
       2024-04-29 18:06:55 +08:00
    开发桌面应用那肯定是用真实桌面环境开发最方便了,qt 有 qtcreator ,不过我觉得不好用,还是一步到位直接 CLion 。资料的话就是 qt 相关,然后如果涉及比如托盘、窗口特效,那确实可能需要在不同 DE 下测试,一般的应用界面开发 QT 基本都会做好兼容的(不过要注意输入法插件的问题)。别家系统不知道,deepin 有些开发资料还是不错的,可以找找看参考参考。
    GeruzoniAnsasu
        3
    GeruzoniAnsasu  
       2024-04-29 22:19:32 +08:00
    区别很大,但又没啥区别。记住别折腾,ubuntu + qtcreator + vscode 默秒全
    lujiaxing
        4
    lujiaxing  
       2024-04-29 23:20:17 +08:00 via Android
    其实不需要了解什么。保证能在各端都显示这种基本问题 QT 已经给你解决了。但你需要知道的是 KDE GNOME XFCE 虽然都能显示,但是不同设备,不同分辨率,不同 DPI 下呈现的效果可能是截然不同的。不同输入法的适配也会是个难题。这些需要在各种环境下反复的测试。的可能不是多高的技术水平,但很考验耐心。
    stevobm
        5
    stevobm  
       2024-04-30 00:04:45 +08:00
    QT 的协议有一定法律风险,指不定某天会收到律师函,然后狠狠宰一笔,这种事情已经不少了。做开源软件无所谓,但是商业软件须留个心眼。好心提醒。
    yyzh
        6
    yyzh  
       2024-04-30 00:09:35 +08:00 via Android
    你是针对统信还是麒麟?
    marcushbs
        7
    marcushbs  
       2024-04-30 01:55:24 +08:00
    系统 API 不是特别复杂的话还是 Electron/Tauri 比较经济实惠
    fox0001
        8
    fox0001  
       2024-04-30 08:00:55 +08:00 via Android
    可以考虑利用现有的技能去开发。现在桌面 app,可以用 web 那套去实现,或者可以考虑 Flutter 那套几乎全平台的解决方案。

    当然,学习一下 QT 也是好的,但我记得 QT 是要 C++开发。
    chengxiao
        9
    chengxiao  
       2024-04-30 08:03:54 +08:00
    用 QT 应该大部分问题 QT 都解决了,他解决不了的,应该都是巨坑,比如之前缩放比例不为整数,渲染偶尔会出现横线,这坑在 kde 里留了几年,因为 qt 没解决,所以 kde 也没办法
    wolfan
        10
    wolfan  
       2024-04-30 08:09:39 +08:00   ❤️ 1
    技术方面大体上都是差不多的。
    但是最好让老板买台国产芯的电脑来跑测试,最好是买配置平庸的,跑的时候记得多开些业务。
    nagisaushio
        11
    nagisaushio  
       2024-04-30 09:01:39 +08:00   ❤️ 1
    作为用户我不喜欢 electron ,作为开发者我直接 electron 启动
    zeromake
        12
    zeromake  
       2024-04-30 09:37:06 +08:00
    qt 的授权记得买,不买打算要搞 lgpl 来免费使用的话,要记得准备好材料,别等到 qt 国内代理卡时间点来就麻烦了( qt 国内代理不会管你符不符合 lgpl ,而是看到你有用就来了,用卡时间,之类的外盘方式强逼买授权)
    bsidb
        13
    bsidb  
       2024-04-30 09:55:48 +08:00
    麒麟与统信的软件包版本估计还不太一样,有些会比较偏老。你在 Ubuntu 或 Debian 上开发的程序拿过去,大概率还要自己再解决依赖问题。建议一步到位,直接在目标操作系统上开发与测试。
    lsk569937453
        14
    lsk569937453  
       2024-04-30 10:08:17 +08:00
    直接 window 开发,然后部署到 linux 上就可以了。
    WangLiCha
        15
    WangLiCha  
    OP
       2024-04-30 10:31:13 +08:00
    @zeromake 要准备点什么材料?我们之前调研的结论是 Qt 发律师函不会考虑你是不是真的违规使用,但是只要库是动态链接的就不用担心他的律师函
    WangLiCha
        16
    WangLiCha  
    OP
       2024-04-30 10:32:11 +08:00
    @wolfan 自己开发的话用虚拟机靠谱吗
    WangLiCha
        17
    WangLiCha  
    OP
       2024-04-30 10:35:35 +08:00
    @yyzh 到时候不排除这两种都得支持。他们有什么要关注的差异吗?
    vivisidea
        18
    vivisidea  
       2024-04-30 10:43:36 +08:00
    不考虑考虑 Swing 么 /狗头保命

    最近给我们公司运营开发了个 Swing GUI 小工具,用 jpackage 打成 exe /deb /dmg 安装包,安装的时候会把 jre runtime 也自动带上,装好之后就跟普通的程序没啥差别,也一样在应用中心卸载(当然慢是肯定慢的)

    https://docs.oracle.com/en/java/javase/17/docs/specs/man/jpackage.html

    我觉得有点意外,还挺方便
    tanranran
        19
    tanranran  
       2024-04-30 10:47:08 +08:00
    @vivisidea Swing 生态太差了
    sbldehanhan
        20
    sbldehanhan  
       2024-04-30 11:21:18 +08:00
    既然是用 Qt 的话,那你还管 win 和 Linux 干嘛?上层 API 不都一样?
    fcyxp
        21
    fcyxp  
       2024-04-30 11:31:36 +08:00
    用最新的 visual studio ,用 cmake 构建 qt 应用,装个虚拟机,支持远程构建
    debuggerx
        22
    debuggerx  
       2024-04-30 11:35:40 +08:00
    现在的新系统都用上了最新的图形技术,需要显卡加速的,虚拟机效果很差,最好还是物理机搞。
    deepin 装一次系统也就几分钟的事,没必要虚拟机或者 Linux To Go ,直接双系统走起。
    wolfan
        23
    wolfan  
       2024-04-30 13:45:14 +08:00
    @WangLiCha 可以。
    vivisidea
        24
    vivisidea  
       2024-04-30 14:00:57 +08:00
    @tanranran 一个 swt ( The Standard Widget Toolkit )基本够用了,而且时至 2024 年,这玩意居然还在持续 release ,有点厉害的……

    https://www.eclipse.org/swt/examples.php

    我的场景是团队都是写 Java 的,用 Java 能复用项目里的很多现成的库,如果 OP 的团队是 Java ,又不是 toC 桌面应用的话,其实 swing swt 可以考虑,要么就 electron
    CynicalRose
        25
    CynicalRose  
       2024-04-30 14:07:52 +08:00
    @vivisidea SWT 一般结合 JFace 做点小工具,工业软件需要上 RCP 。缺点就是资料少,集成 NatTable 这类,缺失的功能还得改源码。
    skiy
        26
    skiy  
       2024-04-30 19:20:40 +08:00
    deepin 没问题。用 ssd 上。U 盘性能不行。
    pollux
        27
    pollux  
       2024-05-01 12:22:22 +08:00   ❤️ 1
    @stevobm +1 ,如果不想付费的就绕过 QT, 其实 tk 和 wxwidget 也不错
    zzzlight
        28
    zzzlight  
       2024-05-06 16:21:51 +08:00
    @vivisidea 因为还有公司在用这套 哈哈哈哈 eclipse 还是不少赞助的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1005 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:14 · PVG 03:14 · LAX 12:14 · JFK 15:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.