Amazon Linux上でDelphiを利用する方法[JAPAN]
毛利です。
AWS(EC2)上のAmazon Linuxを使ってDelphi実行を試してみました。
Amazon LinuxはAWS(EC2)のみで提供されていて AWS APIツールなどがすでにインストールされたLinuxです。
[EC2インスタンス作成]
C2コントロール画面からAmazon Linux(無料利用枠の対象)を選択し作成します
インスタンスが作成されるとすぐにec2-userでSSH接続できる状態になっています。
[環境構築]
http://docwiki.embarcadero.com/RADStudio/Tokyo/ja/Linux アプリケーション開発
上記URLを参照し、Linux SDKをインストールします。
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/compile-software.html
# sudo yum groupinstall "Development Tools"
Development Toolsのインストールが完了すると、「Complete!」と表示されます。
[PAServerのインストール]
RAD Studio 10.2 TokyoがインストールされているWindowsのディレクトリ内から
# C:\Program Files (x86)\Embarcadero\Studio\19.0\PAServer\LinuxPAServer19.0.tar.gz
LinuxPAServer19.0.tar.gzをコピーし、EC2上で作成したAmazon Linuxのインスタンスにsftpなどにputします。
転送できたら解凍します。
# tar -zxvf LinuxPAServer19.0.tar.gz
EC2のセキュリティグループ画面のインバウンド側 64211ポートを受信可能に追加します。
解凍したpaserverを起動します。
# ./PAServer-19.0/paserver
PAServer-19.0とRAD Studio側が接続できるかテストします。
「ツール」→「オプション」画面から→接続プロファイルマネージャーを選び「追加」します
「オプション」画面内の「SDK マネージャー」を選択し、追加ボタンをクリックします。
Linux側からSDK転送開始されます。
この状態でプロジェクトの新規作成Linuxコンソールアプリをデバッグ実行すると下記のようなエラーが出ます。
# [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
yumを使って必要なライブラリをインストールします
# sudo yum install -y gcc gcc-c++ sudo yum install -y openssl-devel
実行後再度SDKのインポート作業をします。
取り込んだWindows側のファイルをリネームします。
libgcc_s.so.1 → libgcc_s.so
libcurl.so.4 → libcurl.so
[Delphiコード実行]
TNetHTTPClientを使ったシンプルなコードを実行します
//// 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.
[結果]
Amazon LinuxからDelphiを実行しTNetHTTPClientを使ってデータを取得できました。


Comments
-
Please login first in order for you to submit comments