最新版的 Delphi 10.3.3 可以编译 Linux 目标程序。比如我用 WebBroker 写的 WEB server 程序,可以运行到 Linux 服务器底下了。

编译环境搭建配置,网上的教程通常是在 Windows 电脑上安装 Delphi,然后在虚拟机里面安装 Linux Server,然后在 Linux Server 里面安装 Delphi 带来的 PAServer 程序,然后让 Delphi 和 PAServer 连接,完成编译过程。比如这篇文章就讲得比较详细:

《Configure Delphi and RedHat or Ubuntu for Linux development.》

备注:Delphi 在编译 Android 程序的时候,不需要连接安卓系统,可以直接编译出安卓的目标文件。然后把这个目标文件拷贝到安卓手机上就可以运行。但是,编译 Linux 目标的时候,它直接弹出一个对话框要 PAServer 的地址。也就是说没有连接 PAServer 是无法编译出 Linux 程序的。

我的想法是,在 Win10 自己带的 Linux 子系统里面,运行 PAServer 这样就不需要专门为 Linux 安装一个虚拟机了。虚拟机太占硬盘空间。

这一次,我的环境配置是:

1. Win10 Linux 子系统(Ubuntu)里面,运行 PAServer;

2. VirtualBox 虚拟机里面安装 Windows,在里面安装 Delphi 10.3.3. 用来编译 Linux 程序。

步骤:

1. 首先在 Win10 电脑里面,启用 Linux 子系统,安装 Ubuntu。这一步,网上很多教程。我前面也有博客文章介绍。

2. 把 Delphi 10.3.3. 安装盘里面带的 LinuxPAServer20.0.tar.gz 这个文件,用 7Zip 程序打开解压,它是一个包含几个文件的文件夹,文件夹的名字是 PAServer-20.0,我把它拷贝到 windows 的 D:\linux\ 底下,因此目录结构就是 D:\linux\PAServer-20.0\

3. 运行 Windows 的 PowerShell,在 PowerShell 窗口里面输入命令:D: 切换到 D 盘,输入命令 cd D:\linux\PAServer-20.0 进入 PASserver 目录。

4. 输入命令 bash 启动 Linux 子系统。

5. 在 Linux 子系统环境里面,看看当前路径是不是 /mnt/d/linux/PAServer-20.0 如果不是,输入 linux 的命令切换当前目录。

6. 在该目录底下,输入命令 ./paserver 运行 PAServer 程序。注意 linux 的程序的运行是输入点号和斜杠再加上程序文件名。

7. PAServer 运行起来,要求你输入密码。不输入也可以。我输入密码 123456 回车,PAServer 显示它工作在 64211 端口,然后停在 【>】符号的提示符,等待输入命令。这时候我们可以不用输入任何命令,可以使用 Delphi 来编译 Linux 程序了。

8. 回到我的虚拟机里面的 Delphi,New 一个 WebBroker 程序,选择 Stand Alone 模式的 Linux 目标,Delphi 自动创建代码框架。这个代码框架不用修改就可以直接编译。点 Delphi 的运行程序的绿色三角按钮,弹出一个对话框,要求建一个 profile,包括名字等。名字随便写,主要是填写 PAServer 的电脑的 IP 地址。这里注意打开 Windows 的防火墙,开放 64211 端口。

9. 编译完成。在 Linux 子系统的 /home/pcplayer/PAServer/scratch-dir 目录下,可以看到 Delphi 编译发布到  Linux 系统的目标程序文件 test。

10. 在 Linux 底下,运行这个 test,也就是输入命令 ./test,它启动后有提示命令,根据提示,输入 start 命令,它的 Web Server 端口打开监听开始工作。

11. 在 Windows 系统里面打开浏览器,地址栏输入 127.0.0.1:8080,看到 WebBroker 的默认网页了。

--------------------------

备注:

1. 在 Delphi 里面,一开始直接用菜单的 Build 菜单,不能编译,提示需要连接 PAServer。创建了一个连接 PAServer 的 Porfile 然后第一次编译发布以后,下次再改了程序,无需连接 PAServer 就可以直接 Build。当然 Build 出来的目标文件默认在 Delphi 的工程文件夹底下的 D:\Test\WebServerForLinux\Linux64\Debug 这样的文件夹底下。

2. 编译到工程项目的 Debug 底下的目标文件,直接拷贝到 Win10 系统的目录底下,比如我这里是 D:\linux\target 目录底下,然后进入 Linux 子系统,在 Linux 子系统里面输入命令切换当前路径,切换进去后,直接 ./test 可以运行这个目标程序。

这个流程跑通了,下次我可以试试在真正的云虚拟机服务器里面运行 PAServer 来编译发布 Linux 程序了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐