开发Linux程序,Delphi拿下!

前些日子,需要写一个数据导入程序,公司为了安全考虑,只提供了一个linux系统的服务器用来访问数据库服务器,一开始我还是有点慌的,因为Linux服务器系统不是图形界面的,全部需要在终端上输入命令来操作的,毕竟之前没有开发过linux系统的程序,不过想想群里几位大神都已经开发过,而且我也加了DelphiLinux开发的群,心里顿时底气十足。

先在自己电脑上搭一个Linux开发环境

也就是在虚拟机上面装一个Linux系统,我用的是VMWare 16。

再下载Linux系统安装盘,

我是在PC下载网下载的深度(deepin)20.2.4 官方版64位ISO,

https://www.pcsoft.com.cn/soft/35131.html

下载地址:

http://cdimage.deepin.com/releases/20.2.4/deepin-desktop-community-20.2.4-amd64.iso

我一开始是装Ubuntu的,装了之后,Delphi的开发环境配不起来,当前可能是我能力的问题,群里朋友推荐我装深度的,最终配置成功。

再在VMWare中新建一个虚拟机用来装Linux系统,

选择我们刚才下载的ISO

这一步比较困惑了,因为操作系统版本下拉框中没有深度Linux的选项,我查了一下,最新的深度Linux内核已经到了5.15.24,所以我这里选的是“其他Linux 5.x及更高版本内核 64位”

给虚拟机起个名字

硬盘大小设置为80G

最后,点击完成即可

安装的过程省略了,

安装成功之后的桌面,我感觉还挺好看,底下的任务栏,和Windows系统操作习惯一样。

接着在Linux中安装所需要的软件库,

这一步我是参考的下面这篇博客做的:

https://blog.csdn.net/weixin_42566451/article/details/116647003

打开终端:

输入:sudo apt-get install joe wget p7zip-full curl build-essential zlib1g-dev libcurl4-gnutls-dev libncurses5

不过我在这一步失败了,网上说要将软件下载源改为国内的下载源,

按这篇博客中的方法解决:

https://blog.csdn.net/yjj350418592/article/details/121030942

就是运行如下命令:

sudo gedit /etc/apt/sources.list

将sources.list的内容替换为如下:

deb http://mirrors.aliyun.com/ubuntu bionic main multiverse restricted universe

deb http://mirrors.aliyun.com/ubuntu bionic-updates main multiverse restricted universe

deb http://mirrors.aliyun.com/ubuntu bionic-security main multiverse restricted universe

deb http://mirrors.aliyun.com/ubuntu bionic-proposed main multiverse restricted universe

deb http://mirrors.aliyun.com/ubuntu bionic-backports main multiverse restricted universe

然后运行更新设置命令:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install build-essential

在执行apt update的时候又报了一个签名的错误,真是走一步错一步呀:

80GKXG1V46{7}`DW{)$A$}8

最后是参考的这篇博客解决的:

https://blog.csdn.net/lj19990824/article/details/120666775

我把重点摘出来:

**问题:**在使用sudo apt-get update更新的时候,报了以下错误

IMG_256

**解决:**打开终端,下载对应密钥
sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 3B4FE6ACC0B21F32
3B4FE6ACC0B21F32是缺少的密钥,缺少什么就下什么

接下来在Linux上安装PAServer,

PASever的Linux安装包在Delphi的安装目录中,在我电脑上是C:\Program Files (x86)\Embarcadero\Studio\22.0\PAServer\LinuxPAServer22.0.tar.gz,其中的版本号22.0表示我目前用的Delphi版本是 11(11.1),

用拖拽的方式将它复制到Linux系统中

不用安装,直接右键,解压即可:

那怎么运行PAServer呢?右键解压出来的paserver,在弹出菜单中选择“打开”,

在弹出的对话框中选择“在终端中运行”

提示要我们设置PAServer的连接密码,我一般不输,直接按回车就行:

再查看linux的ip地址:

可以鼠标移到任务栏的网络图标中查看:

也可以在终端中输入命令:ip addr show查看

在Delphi添加Linux的SDK:

先在IDE->Tools->Options->Deployment->Connection Profile Manager中添加一个Linux平台的PAServer连接,Host name(服务端主机名)填我们Linux系统的IP地址:

再在SDK Manager中添加Linux的SDK:

好了,环境配置完成了

现在,让我们写一个linux程序测试一下:

新建一个工程的时候可以看到,有三种工程类型支持Linux,Package控件包、Dynamic Library动态链接库以及Console Application控制台程序,那我们就建一个Console Application吧。

我们用WriteLn在命令行输出:Hello World By Delphi!

编译运行:

但是我这里报了一个错(Debug模式下):

但是在Release模式下可以运行,真是莫名其妙:

在PAServer的窗口中成功输出:

我们编译出来的程序在主目录\PAServer\scratch-dir\连接名\工程名目录中:

我们直接把它拖到终端窗口,按回车即可运行:

生成的Linux程序在Windows上也有一份的,它在工程的生成目录:

最后就是把你生成的程序,拷到服务器上去运行啦!

我是安装的群里推荐的XShell来连接Linux服务器的

先来看看是什么linux系统,我们输入:cat /proc/version

是centos,

把我们刚才生成的Linux程序拷到linux服务器上,输入rz -be命令,会弹出对话框选择要上传的文件:

可以用ls查看当前目录下的文件,看看Project14这个程序有没有在:

再用命令将文件属性改为可执行程序:

sudo chmod 777 Project14

再输入./Project14来运行:

竟然可以运行,Delphi真牛!

那接下来导数据的工作Delphi就可以完全胜任啦!

整个体验到这里就结束啦,总算是有惊无险。Delphi也能在fmxlinux控件的支持下开发Linux下的桌面程序,很巧的是,刚才我写完这篇博客的时候,朋友圈里面有人发他在国产Linux上运行Delphi开发的桌面程序示例:

8d0ca0056891b0f23b9077f2cd9bab12

随着国家对信息安全的注重,已经催生了一波Linux国产自主软件的开发热潮,希望大家多给自家Delphi机会,多用Delphi!

有一个DelphiForLinux的QQ群(群号:734515869)介绍给大家:

大家也可以加我微信18957901025,或者QQ452330643相互交流。

祝大家使用Delphi愉快!