delphi最新版已经支持linux编译,不过官方只支持控制台程序,国外有个厂商做了一个牛逼的扩展.使得可以编译可视化程序.

delphi最新版已经支持linux编译,不过官方只支持控制台程序,国外有个厂商做了一个牛逼的扩展.使得可以编译可视化程序.

 

 

支持情况

编译出来的程序,只支持linux 64位桌面系统.目前测试过,ubuntu ,suse,debian. 均正常使用.

开发编译环境好像只支持ubuntu /redhat

 

 

fmxlinx

下载自己找,找个和谐版. 如果用官方的免费版,有水印,而且运行会弹出一个提示.

和谐版和官方免费版只是替换了一个文件,相当简单.

 

下面介绍操作.请先安装好fmxlinx再操作.

 

 

1,打开或新建fmx程序

 

我这里用的我之前开源的一个QQ相册外链工具演示.

 

 

 

2,将fmx程序加入linux支持

 

在项目名称,右键,一个"Add Linux Platform"

然后就看到了linux 64位的目标平台.

 

3,在linux上运行paserver

linux的paserver文件在

C:\Program Files (x86)\Embarcadero\Studio\19.0\PAServer\LinuxPAServer19.0.tar.gz

复制到UBUNTU上解压运行即可.

 

用于交叉编译,然后在64-bit linux 上添加sdk

首次添加SDK大概要复制1G左右的文件.需要一点时间

 

4,交叉编译/执行

 

编译之后的程序在paserver的目录下,一个主程序+一个so文件.

如果so文件在lib/lib64目录有副本,那么这个程序理论上可以在任意文件夹单独执行,

 

5,代码和USE的补充

1,ansichar 和 pansichar  直接用char 和 pchar

2,关于use,要注意跨平台

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Edit, FMX.Layouts,
  FMX.Memo,System.RegularExpressions, FMX.Objects, FMX.StdCtrls, FMX.ScrollBox, FMX.Controls.Presentation,
{$IFDEF MSWINDOWS}
  Winapi.ShellAPI, Winapi.Windows,
{$ENDIF MSWINDOWS}
 {$IFDEF POSIX}
  Posix.SysTypes,
  Posix.Stdlib,
  Posix.UniStd,
  Posix.Signal,
{$IFDEF MACOS}
  Macapi.CoreServices,
{$ENDIF MACOS}
{$IFDEF ANDROID}
  Posix.Fcntl,
{$ENDIF ANDROID}
{$IFDEF LINUX}
  System.SyncObjs,
{$ENDIF LINUX}
{$ENDIF POSIX}
FMX.ExtCtrls;

 

 

3,执行其他程序/打开链接

procedure TMain_Form.Text2Click(Sender: TObject);
const
sCommand = 'https://www.yge.me/';

var
lCommand :Char;
begin

{$IFDEF MSWINDOWS}
  ShellExecute(0, 'OPEN', PChar(sCommand), '', '', SW_SHOWNORMAL);
{$ENDIF MSWINDOWS}
 {$IFDEF POSIX}

{$IFDEF MACOS}
  _system(PAnsiChar('open ' + AnsiString(sCommand)));
{$ENDIF MACOS}
{$IFDEF ANDROID}

{$ENDIF ANDROID}
{$IFDEF LINUX}
  _system('firefox ' + sCommand);
{$ENDIF LINUX}

{$ENDIF POSIX}

end;

linux 和mac os还有 ios 安卓没有 shellexecute命令.所以不能执行.

windows之外的系统可以用_system代替.

linux上我就直接调用内置的firefox 打开网页了..