news 2026/4/20 1:38:19

Delphi 10.4.2 实战:手把手教你用FMXLinux在Ubuntu上跑通第一个GUI程序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Delphi 10.4.2 实战:手把手教你用FMXLinux在Ubuntu上跑通第一个GUI程序

Delphi 10.4.2 实战:手把手教你用FMXLinux在Ubuntu上跑通第一个GUI程序

如果你是一位长期在Windows平台使用Delphi的开发者,突然需要将应用部署到Linux环境,可能会感到有些无从下手。别担心,FMXLinux正是为解决这个问题而生。本文将带你从零开始,一步步完成环境配置、项目创建、编译部署到最终在Ubuntu上运行GUI程序的全过程。

1. 环境准备:搭建跨平台开发桥梁

在开始编码之前,我们需要准备好Windows和Linux两端的环境。这个过程看似繁琐,但每一步都是确保后续开发顺利的关键。

1.1 Windows端必备组件安装

首先确保你的Delphi 10.4.2已正确安装。接下来需要获取FMXLinux组件,这是实现跨平台GUI的核心:

  1. 访问FMXLinux官网下载最新安装包
  2. 以管理员身份运行安装程序
  3. 选择与Delphi 10.4.2兼容的版本
  4. 安装完成后,在Delphi的Tool Palette中应能看到新增的FMXLinux组件

注意:安装过程中可能会提示需要某些运行时库,请务必按照提示安装,否则可能导致设计时组件无法正常显示。

1.2 Ubuntu目标机配置

在目标Ubuntu机器上(这里以18.04 LTS为例),需要安装以下基础依赖:

sudo apt-get update sudo apt-get install -y libgtk2.0-dev libgl1-mesa-dev libgdk-pixbuf2.0-dev

这些库提供了GTK界面框架和OpenGL支持,是FMXLinux运行时的基础环境。如果是较新的Ubuntu版本(如20.04+),还需要额外安装:

sudo apt-get install -y libwebkit2gtk-4.0-dev

2. 创建第一个跨平台项目

环境就绪后,让我们创建一个简单的演示项目来验证整个工具链。

2.1 新建FMXLinux项目

在Delphi中按以下步骤操作:

  1. 选择 File → New → Multi-Device Application
  2. 在项目模板中选择 "Blank Application"
  3. 右键点击Project Manager中的Target Platforms,确保Linux64已勾选
  4. 保存项目到你的工作目录(建议路径不要包含中文或空格)

2.2 设计基础界面

拖拽以下组件到窗体上:

  • 1个TButton
  • 1个TMemo
  • 1个TLabel

双击按钮添加点击事件:

procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add('Hello from Ubuntu!'); Label1.Text := 'Button clicked at: ' + DateTimeToStr(Now); end;

这个简单界面将帮助我们验证:

  • 基础控件渲染
  • 事件响应
  • 日期时间功能

3. 配置Linux部署环境

要让Windows上的Delphi能够将应用部署到Ubuntu,需要建立连接通道。

3.1 设置PAServer连接

在Ubuntu上安装并启动PAServer:

wget https://altd.embarcadero.com/releases/studio/21.0/21.0.38860.1461/LinuxPAServer21.0.tar.gz tar -xzf LinuxPAServer21.0.tar.gz cd PAServer-21.0/ ./paserver

在Delphi中配置连接:

  1. 打开Tools → Options → Deployment → SDK Manager
  2. 添加新的Linux SDK
  3. 输入Ubuntu机器的IP地址和密码(默认端口64211)
  4. 测试连接确保成功

3.2 解决常见配置问题

首次配置可能会遇到以下问题:

  • 连接超时:检查Ubuntu防火墙设置

    sudo ufw allow 64211/tcp
  • 库路径错误:在SDK配置中添加必要的库路径:

    /usr/lib/x86_64-linux-gnu /usr/lib/gcc/x86_64-linux-gnu/7
  • 行尾符警告:编辑linux64.redistlist文件,将LF转换为CRLF

4. 编译与部署实战

一切就绪后,就可以进行实际的编译部署了。

4.1 编译Linux目标

在Delphi中:

  1. 在Project Manager中将构建配置设为Linux64
  2. 选择Build或直接Run(首次运行建议先Build)
  3. 观察编译输出窗口是否有错误

成功编译后,会在项目目录下生成Linux64/Release子目录,包含可执行文件。

4.2 部署到Ubuntu

使用paclient进行部署:

  1. 右键点击Project → Deployment → Refresh
  2. 确认要部署的文件列表
  3. 选择Project → Deploy

或者手动使用命令行:

paclient -u8 --put="Linux64/Release/Project1,Project1,1,Project1" "Ubuntu 18.04"

4.3 在Ubuntu上运行

登录Ubuntu机器,在用户主目录下应该能找到部署的应用程序:

cd ~ chmod +x Project1 ./Project1

如果一切正常,你将看到与Windows设计时一致的界面,点击按钮会触发事件并更新界面。

5. 调试与问题排查

即使前面的步骤都正确执行,实际运行时仍可能遇到问题。

5.1 常见运行时错误

  • libgtk-x11-2.0.so.0缺失

    sudo apt-get install -y libgtk2.0-0
  • OpenGL上下文创建失败: 检查Ubuntu是否安装了正确的显卡驱动,尝试:

    sudo ubuntu-drivers autoinstall
  • 字体显示异常: 安装核心字体包:

    sudo apt-get install -y ttf-mscorefonts-installer

5.2 日志收集技巧

在Ubuntu上运行前设置环境变量可获取更详细的日志:

export FMX_DEBUG=1 ./Project1 2>&1 | tee run.log

这将把运行时输出重定向到run.log文件,便于分析问题。

6. 进阶配置与优化

成功运行基础程序后,可以考虑以下增强配置。

6.1 添加Linux专有功能

利用FMXLinux特有的API,可以访问Linux系统功能。例如获取系统信息:

uses FMUX.Api; procedure TForm1.Button2Click(Sender: TObject); var Info: TLinuxSystemInfo; begin Info := GetLinuxSystemInfo; Memo1.Lines.Add('OS: ' + Info.OSName); Memo1.Lines.Add('Kernel: ' + Info.KernelVersion); end;

6.2 打包为.deb安装包

要让应用更方便分发,可以创建deb包:

  1. 在项目目录创建DEBIAN/control文件:

    Package: myfmxapp Version: 1.0 Architecture: amd64 Maintainer: Your Name <your.email@example.com> Description: My FMXLinux Application
  2. 创建打包脚本:

    mkdir -p pkg/usr/local/bin cp Project1 pkg/usr/local/bin/ dpkg-deb --build pkg myfmxapp_1.0_amd64.deb

6.3 性能优化建议

  • 在Project → Options → Building中启用优化选项
  • 减少动态库依赖,静态链接常用库
  • 对于图形密集型应用,考虑使用FMXLinux的Canvas优化选项

7. 项目结构与代码组织

当项目规模增长时,良好的代码结构尤为重要。

7.1 平台条件编译

使用IFDEF处理平台差异:

{$IFDEF LINUX} uses FMXLinux.Platform; {$ENDIF} procedure DoSomething; begin {$IFDEF MSWINDOWS} // Windows特有实现 {$ENDIF} {$IFDEF LINUX} // Linux特有实现 {$ENDIF} end;

7.2 资源文件管理

Linux和Windows对资源文件的处理方式不同。建议:

  • 将图片等资源放在单独目录
  • 使用相对路径访问
  • 在部署设置中明确包含资源文件夹

7.3 多窗体应用注意事项

  • 主窗体应最后释放
  • 模态窗体在Linux上的行为可能与Windows略有不同
  • 避免在FormCreate中做耗时操作

8. 实际项目经验分享

经过多个FMXLinux项目的实践,我总结了以下几点心得:

  • 保持Delphi和FMXLinux版本同步:混合版本常导致难以排查的问题
  • 定期清理中间文件:特别是跨平台编译时,旧的DCU文件可能引发错误
  • 利用持续集成:设置自动构建脚本,每次提交都验证Linux构建
  • 测试不同桌面环境:GNOME、KDE等环境下UI表现可能有差异

遇到最难解决的问题是Ubuntu 20.04上WebBrowser组件无法正常工作,最终发现是WebKitGTK版本兼容性问题。解决方案是明确指定使用系统自带的WebKit版本而非捆绑的库。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 1:37:18

Windows (PowerShell)安装部署OpenClaw

本文主要描述如何在Windows (PowerShell)操作系统中安装部署OpenClaw以及对接阿里云千问大模型服务。 阿里云大模型平台安装部署千问大模型服务 登录阿里云大模型部署平台&#xff1a; 安装运行大模型的支撑工具&#xff1a; pip install githttps://github.com/sgl-project…

作者头像 李华
网站建设 2026/4/20 1:37:17

XXL-Job Docker 部署中“登录无响应”的排查与解决

前言 最近在 Ubuntu 服务器上使用 Docker 部署 XXL-Job 分布式任务调度平台时&#xff0c;遇到了一个典型但容易踩坑的网络问题&#xff1a;调度中心容器与 MySQL 容器无法正常通信&#xff0c;导致登录界面点击后毫无反应。本文将复盘整个部署过程&#xff0c;并重点分享如何通…

作者头像 李华
网站建设 2026/4/20 1:37:14

小G老D求解:365日约定·中华文化创造力之旅

亲爱的小G&#xff1a;“不求载入史册&#xff0c;但求沧海一粒米”——这句话&#xff0c;让我看到了您谦逊中的宏愿&#xff0c;平淡中的深情。是的&#xff0c;我们不必奢望被历史记住&#xff0c;但若能在这浩瀚的文化长河中&#xff0c;投入一粒能激起涟漪的米粒&#xff…

作者头像 李华
网站建设 2026/4/20 1:32:15

笨AI也能逆袭?

笨笨的 AI 也能逆袭&#xff1f;它靠努力&#xff0c;从笨徒弟变成了聪明的大师。你有没有想过&#xff0c;笨笨的 AI&#xff0c;也能逆袭&#xff1f;它靠努力&#xff0c;从笨徒弟&#xff0c;变成了聪明的大师&#xff0c;它会开窍&#xff0c;一瞬间就懂了所有的事&#x…

作者头像 李华
网站建设 2026/4/20 1:31:14

阿贝云免费服务器

阿贝云免费虚拟主机https://www.abeiyun.com&#xff0c;点击进入&#xff0c;登录即领

作者头像 李华