Amazon Linux上でDelphiを使う

  • 2
    いいね
  • 0
    コメント

Delphi 10.2 TokyoはLinuxを利用する事ができます。
サポートされているのはUbuntuとRedhatですが Amazon Linuxで試してみました。

Amazon Linux側の環境構築

Development Toolsと RAD Studioに付属されているPAServer(LinuxPAServer19.0.tar.gz)があれば基本的に動きます

install.sh
#LinuxPAServer19.0.tar.gzをsftpなどでAmazon Linuxインスタンスにコピーし解凍します
tar -zxvf LinuxPAServer19.0.tar.gz
#Development Toolsをインストール
sudo yum groupinstall "Development Tools"

sudo /sbin/ldconfig -p | grep libgcc
#入ってなさそうなら下記も入れる
sudo yum install -y gcc gcc-c++
sudo yum install -y openssl-devel

http://docwiki.embarcadero.com/RADStudio/Tokyo/ja/Linux_アプリケーション開発
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/compile-software.html

[ツール]→[オプション]画面
2017-05-021646.png
[接続プロファイル マネージャ]→[追加]し[接続テスト]をクリック
成功したら同じオプション画面の[SDK マネージャ]でSDKを追加します

2017-05-021650.png

2017-05-021653.png

RAD Studio側で新規プロジェクト作成

[ファイル]→[新規作成]→[その他]→[Delphi プロジェクト]
2017-05-021755.png
こんな画面が出て真ん中にコードが書けるのですが
右端の方にプロジェクトマネージャーがありデバイスが選択できます

2017-05-021754.png
64ビット Linuxを選択します。

試したコード

Project1.dpr
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  System.Net.URLClient,
  System.Net.HttpClient, System.Net.HttpClientComponent;
var
  netc_:  TNetHTTPClient;
  res_:   IHTTPResponse;
  s_:     String;
begin
  try
    netc_ := TNetHTTPClient.Create(nil);
    try
      res_  := netc_.Get('http://mojeld.com/');
      s_    := res_.ContentAsString(TEncoding.UTF8);
      Writeln(s_);
    finally
      netc_.DisposeOf;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

エラーが出る場合

[DCC エラー] E2597 C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\ld-linux.exe: error: cannot find -lgcc_s
[DCC エラー] E2597 C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\ld-linux.exe: error: cannot find -lcurl

実行するとエラーになる場合下記のファイルの名前を変更する

libgcc_s.so.1 → libgcc_s.so
libcurl.so.4 → libcurl.so

参考URL

https://community.embarcadero.com/blogs/entry/amazon-linux-delphi-japan