当前位置: 首页 > article >正文

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的核心访问FMXLinux官网下载最新安装包以管理员身份运行安装程序选择与Delphi 10.4.2兼容的版本安装完成后在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-dev2. 创建第一个跨平台项目环境就绪后让我们创建一个简单的演示项目来验证整个工具链。2.1 新建FMXLinux项目在Delphi中按以下步骤操作选择 File → New → Multi-Device Application在项目模板中选择 Blank Application右键点击Project Manager中的Target Platforms确保Linux64已勾选保存项目到你的工作目录建议路径不要包含中文或空格2.2 设计基础界面拖拽以下组件到窗体上1个TButton1个TMemo1个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上安装并启动PAServerwget 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中配置连接打开Tools → Options → Deployment → SDK Manager添加新的Linux SDK输入Ubuntu机器的IP地址和密码默认端口64211测试连接确保成功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转换为CRLF4. 编译与部署实战一切就绪后就可以进行实际的编译部署了。4.1 编译Linux目标在Delphi中在Project Manager中将构建配置设为Linux64选择Build或直接Run首次运行建议先Build观察编译输出窗口是否有错误成功编译后会在项目目录下生成Linux64/Release子目录包含可执行文件。4.2 部署到Ubuntu使用paclient进行部署右键点击Project → Deployment → Refresh确认要部署的文件列表选择Project → Deploy或者手动使用命令行paclient -u8 --putLinux64/Release/Project1,Project1,1,Project1 Ubuntu 18.044.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-0OpenGL上下文创建失败 检查Ubuntu是否安装了正确的显卡驱动尝试sudo ubuntu-drivers autoinstall字体显示异常 安装核心字体包sudo apt-get install -y ttf-mscorefonts-installer5.2 日志收集技巧在Ubuntu上运行前设置环境变量可获取更详细的日志export FMX_DEBUG1 ./Project1 21 | 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包在项目目录创建DEBIAN/control文件Package: myfmxapp Version: 1.0 Architecture: amd64 Maintainer: Your Name your.emailexample.com Description: My FMXLinux Application创建打包脚本mkdir -p pkg/usr/local/bin cp Project1 pkg/usr/local/bin/ dpkg-deb --build pkg myfmxapp_1.0_amd64.deb6.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版本而非捆绑的库。

相关文章:

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

Delphi 10.4.2 实战:手把手教你用FMXLinux在Ubuntu上跑通第一个GUI程序 如果你是一位长期在Windows平台使用Delphi的开发者,突然需要将应用部署到Linux环境,可能会感到有些无从下手。别担心,FMXLinux正是为解决这个问题而生。本文…...

从H264到H266:视频编码的‘乐高’块是如何越变越小的?一个动画演示看懂核心差异

从H264到H266:视频编码的‘乐高’块是如何越变越小的? 想象一下,你正在用乐高积木拼装一幅蒙娜丽莎的画像。如果只能用16x16的大方块,细节必然模糊;换成8x8的小方块,嘴角的微笑就能更生动;而如果…...

别再让Quartus默认的1GHz时钟坑了你!手把手教你为FPGA点灯工程写SDC约束文件

FPGA时序约束实战:从1GHz陷阱到精准SDC文件编写 刚接触FPGA开发的工程师们,在完成第一个点灯工程后往往会遇到一个令人困惑的现象——明明代码逻辑简单清晰,Quartus却报出时序违例的红色警告。这背后隐藏着一个新手容易忽略的关键问题&#x…...

Google BwA 杭州场(Gemma 4 专题全国首发)线下活动记录

今天参加了Google BwA 杭州场(Gemma 4 专题全国首发)线下活动,感觉挺有意思的。这篇文章简单总结一下活动的主要内容。 关于MoE模型 本地大模型的一大问题就是运行速度慢。会上说的让我比较印象深刻的一个点就是,Gemma 4有多个版…...

瑞萨RZN2L ADC+DMA数据流实战:从寄存器配置到双缓冲模式解析

瑞萨RZN2L ADCDMA数据流实战:从寄存器配置到双缓冲模式解析 在嵌入式开发领域,高效稳定的数据采集系统往往是项目成功的关键。当我们面对需要连续采集传感器数据的场景时,如何确保数据不丢失、系统不卡顿,就成为工程师必须解决的难…...

2026 年 3–4 月 Polkadot 到底改了什么,还要改什么

作者:PaperMoon 团队 如果你是一个长期 DOT 质押者,过去两个月大概率有一种"每次打开钱包都在看陌生参数"的感觉。到账的质押奖励在变少,Nominator 的仪表盘弹出了一个以前没见过的提示,有人在 Telegram 里跟你说"…...

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

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

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

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

Windows (PowerShell)安装部署OpenClaw

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

2026市场岗位学数据分析的价值分析

一、2026年市场岗位中数据分析的重要性数据分析在市场岗位中的作用日益凸显,2026年预计将成为核心技能之一。随着数字化进程加速,市场决策越来越依赖数据驱动,掌握数据分析能力将显著提升职业竞争力。二、数据分析在市场岗位中的具体应用市场…...

安全使用 static_cast 进行类型转换的技巧

在 C++ 编程中,类型转换是一个常见但需要谨慎处理的操作。特别是当涉及到继承体系中的类型转换时,static_cast 和 dynamic_cast 之间的选择常常会引起讨论。本文将探讨如何安全地使用 static_cast 进行类型转换,并结合实例说明其使用场景。 理解 static_cast static_cast …...

解析Pandas 1.3.2版本的XML数据读取问题

在使用Pandas处理XML格式的数据时,经常会遇到数据类型不符合预期的情况,特别是在处理压缩的XML文件(如.xml.gz)时。让我们通过一个实际的例子来探讨如何解决Pandas 1.3.2版本中没有dtype参数的问题。 问题描述 假设我们有两个XML数据文件,每个文件包含多个<Data>元…...

Product Hunt 每日热榜 | 2026-04-19

1. Claude Design by Anthropic Labs 标语&#xff1a;与Claude对话&#xff0c;制作原型、幻灯片和单页简介。 介绍&#xff1a;Claude Design是Anthropic推出的一款人工智能设计工具&#xff0c;它能够通过简单的提示将你的想法转化为精美的视觉作品。你可以用它创建原型、…...

YOLOv5-face:面向实时人脸检测的优化架构与应用实践

YOLOv5-face&#xff1a;面向实时人脸检测的优化架构与应用实践 【免费下载链接】yolov5-face YOLO5Face: Why Reinventing a Face Detector (https://arxiv.org/abs/2105.12931) ECCV Workshops 2022) 项目地址: https://gitcode.com/gh_mirrors/yo/yolov5-face YOLOv5…...

zmq源码分析之io_thread_t

文章目录概述继承关系核心成员构造函数启动与停止启动停止事件处理读事件处理&#xff08;核心&#xff09;其他事件&#xff08;理论上不会被调用&#xff09;停止处理架构图事件循环流程与其他组件的关系线程创建流程关键设计点命令处理类型性能特点总结概述 io_thread_t 是…...

Windows 10系统清理终极指南:让旧电脑重获新生的免费神器

Windows 10系统清理终极指南&#xff1a;让旧电脑重获新生的免费神器 【免费下载链接】Win10BloatRemover Configurable CLI tool to easily and aggressively debloat and tweak Windows 10 by removing preinstalled UWP apps, services and more. Originally based on the W…...

10年老兵带你学Java(第3课):数组和方法 - 代码的复用

本课目标 数组&#xff1a;一组数据的容器方法&#xff1a;代码的复用面向对象入门&#xff1a;类和方法的关系 上节课学了变量&#xff0c;一个变量存一个数据。 这节课学数组&#xff0c;一个变量存一组数据。还有方法&#xff0c;把代码打包成可复用的块。一、数组&#xff…...

Polkadot 技术栈地图 2026

作者&#xff1a;PokerMoon 团队 区块链项目的官网有一个通病——首页永远写得像科幻小说&#xff0c;“Tech” 页面永远写得像论文目录。Polkadot 的 /tech 页就是典型案例。你点进去&#xff0c;映入眼帘的是一连串大写字母缩写&#xff1a;JAM、PVM、Coretime、XCM、PoP………...

C语言学习日志

大家好&#xff0c;我是一名物联网工程专业的大学生&#xff0c;很高兴认识大家&#xff0c;同时这也是我的第一篇博客。1.我的编程目标&#xff1a; 学习c语言主要是为了对后面c的学习做铺垫&#xff0c;完善我的大创项目&#xff0c;为我的简历增添色彩&#xff0c;收到一份好…...

5分钟实现Windows和Linux鼠标指针美化:macOS风格光标主题完整指南

5分钟实现Windows和Linux鼠标指针美化&#xff1a;macOS风格光标主题完整指南 【免费下载链接】apple_cursor Free & Open source macOS Cursors. 项目地址: https://gitcode.com/gh_mirrors/ap/apple_cursor 你是否厌倦了Windows或Linux系统默认的单调鼠标指针&…...

计算机毕业设计:Python农产品价格与销量关联分析系统 Django框架 数据分析 可视化 大数据 大模型 机器学习(建议收藏)✅

1、项目介绍 技术栈 采用 Python 语言开发&#xff0c;基于 Django 框架搭建后端服务&#xff0c;使用 MySQL 数据库进行数据存储&#xff0c;前端结合 HTML 与 Echarts 可视化库实现数据展示。 功能模块农产品价格区间分布农产品销量分布农产品不同省份销量分布农产品…...

Cats Blender插件终极指南:如何快速将3D模型优化并导入VRChat

Cats Blender插件终极指南&#xff1a;如何快速将3D模型优化并导入VRChat 【免费下载链接】cats-blender-plugin :smiley_cat: A tool designed to shorten steps needed to import and optimize models into VRChat. Compatible models are: MMD, XNALara, Mixamo, DAZ/Poser,…...

阿贝云免费服务器

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

计算机毕业设计:Python农业电商销售数据分析平台 Django框架 数据分析 可视化 大数据 大模型 机器学习(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝50W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战8年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ > &#x1f345;想要获取完整文章或者源码&#xff0c;或者代做&#xff0c;拉到文章底部即可与…...

【AGI蛋白质折叠预测革命】:2024年AlphaFold 3与RoseTTAFold AI实测对比,精准度突破99.2%的5大临床应用落地路径

第一章&#xff1a;AGI蛋白质折叠预测能力的范式跃迁 2026奇点智能技术大会(https://ml-summit.org) 传统蛋白质结构预测依赖于多序列比对&#xff08;MSA&#xff09;与共进化信号挖掘&#xff0c;计算密集且对低同源性蛋白失效&#xff1b;而新一代AGI驱动的折叠模型已突破…...

别再学框架了!2026奇点大会证实:未来3年高薪岗位只筛选这7种AGI协同行为模式

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AGI与编程能力 2026奇点智能技术大会(https://ml-summit.org) AGI驱动的实时代码生成范式 本届大会首次公开展示了基于多模态具身推理的AGI编程代理——SingularityCoder v3.2。该系统不再依赖静态训练数据&#xff0c;而…...

ESP32上传图片到巴法云,除了HTTPClient,你还可以试试这个库

ESP32进阶方案&#xff1a;三种高效上传图片到巴法云的库对比与实践 在物联网项目中&#xff0c;ESP32作为一款高性价比的Wi-Fi/蓝牙双模芯片&#xff0c;经常被用于图像采集与传输场景。巴法云作为国内流行的物联网平台&#xff0c;提供了便捷的图片上传接口。虽然官方例程通常…...

企业云盘选型标准合同条款:数据归属/服务等级/SLA全解析

作者&#xff1a;巴别鸟技术团队 适用场景&#xff1a;IT采购、合规审查、法务评估 更新时间&#xff1a;2026-04引言&#xff1a;为什么选云盘先看合同&#xff1f; 企业选择云盘时&#xff0c;大多数人盯着功能对比、UI体验、存储价格——但真正踩过坑的IT负责人知道&#xf…...

企业云盘数据安全实战:从传输加密到存储隔离的完整方案

⚠️ 一个让人震惊的事实&#xff1a;根据OWASP 2023年报告&#xff0c;超过60%的企业数据泄露事件&#xff0c;攻击入口不是高深的黑客技术&#xff0c;而是未加密的传输层。你的企业云盘HTTP流量&#xff0c;可能正在被监听&#xff0c;而你毫不知情。 前言&#xff1a;一个价…...

Go语言怎么做地理围栏_Go语言地理位置计算教程【指南】

最稳的IP地理围栏方案是用oschwald/maxminddb-golang读取GeoLite2-City.mmdb&#xff0c;配合CF-Connecting-IP或Nginx可信IP头获取真实IP&#xff0c;白名单用map、围栏用S2库做点面判断&#xff0c;高实时场景选Tile38。用 maxminddb 查 IP 归属做围栏&#xff0c;别碰 geoip…...