V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
WangLiCha
V2EX  ›  程序员

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

  •  1
     
  •   WangLiCha · 213 天前 · 3678 次点击
    这是一个创建于 213 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    当然,学习一下 QT 也是好的,但我记得 QT 是要 C++开发。
    chengxiao
        9
    chengxiao  
       212 天前
    用 QT 应该大部分问题 QT 都解决了,他解决不了的,应该都是巨坑,比如之前缩放比例不为整数,渲染偶尔会出现横线,这坑在 kde 里留了几年,因为 qt 没解决,所以 kde 也没办法
    wolfan
        10
    wolfan  
       212 天前   ❤️ 1
    技术方面大体上都是差不多的。
    但是最好让老板买台国产芯的电脑来跑测试,最好是买配置平庸的,跑的时候记得多开些业务。
    nagisaushio
        11
    nagisaushio  
       212 天前   ❤️ 1
    作为用户我不喜欢 electron ,作为开发者我直接 electron 启动
    zeromake
        12
    zeromake  
       212 天前
    qt 的授权记得买,不买打算要搞 lgpl 来免费使用的话,要记得准备好材料,别等到 qt 国内代理卡时间点来就麻烦了( qt 国内代理不会管你符不符合 lgpl ,而是看到你有用就来了,用卡时间,之类的外盘方式强逼买授权)
    bsidb
        13
    bsidb  
       212 天前
    麒麟与统信的软件包版本估计还不太一样,有些会比较偏老。你在 Ubuntu 或 Debian 上开发的程序拿过去,大概率还要自己再解决依赖问题。建议一步到位,直接在目标操作系统上开发与测试。
    lsk569937453
        14
    lsk569937453  
       212 天前
    直接 window 开发,然后部署到 linux 上就可以了。
    WangLiCha
        15
    WangLiCha  
    OP
       212 天前
    @zeromake 要准备点什么材料?我们之前调研的结论是 Qt 发律师函不会考虑你是不是真的违规使用,但是只要库是动态链接的就不用担心他的律师函
    WangLiCha
        16
    WangLiCha  
    OP
       212 天前
    @wolfan 自己开发的话用虚拟机靠谱吗
    WangLiCha
        17
    WangLiCha  
    OP
       212 天前
    @yyzh 到时候不排除这两种都得支持。他们有什么要关注的差异吗?
    vivisidea
        18
    vivisidea  
       212 天前
    不考虑考虑 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  
       212 天前
    @vivisidea Swing 生态太差了
    sbldehanhan
        20
    sbldehanhan  
       212 天前
    既然是用 Qt 的话,那你还管 win 和 Linux 干嘛?上层 API 不都一样?
    fcyxp
        21
    fcyxp  
       212 天前
    用最新的 visual studio ,用 cmake 构建 qt 应用,装个虚拟机,支持远程构建
    debuggerx
        22
    debuggerx  
       212 天前
    现在的新系统都用上了最新的图形技术,需要显卡加速的,虚拟机效果很差,最好还是物理机搞。
    deepin 装一次系统也就几分钟的事,没必要虚拟机或者 Linux To Go ,直接双系统走起。
    wolfan
        23
    wolfan  
       212 天前
    @WangLiCha 可以。
    vivisidea
        24
    vivisidea  
       212 天前
    @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  
       212 天前
    @vivisidea SWT 一般结合 JFace 做点小工具,工业软件需要上 RCP 。缺点就是资料少,集成 NatTable 这类,缺失的功能还得改源码。
    skiy
        26
    skiy  
       212 天前
    deepin 没问题。用 ssd 上。U 盘性能不行。
    pollux
        27
    pollux  
       211 天前   ❤️ 1
    @stevobm +1 ,如果不想付费的就绕过 QT, 其实 tk 和 wxwidget 也不错
    zzzlight
        28
    zzzlight  
       206 天前
    @vivisidea 因为还有公司在用这套 哈哈哈哈 eclipse 还是不少赞助的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3132 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 14:40 · PVG 22:40 · LAX 06:40 · JFK 09:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.