Delphi xe10.2 交叉编译linux 可视化程序
文章目录
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.getce.cn/';
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 打开网页了..