« Delphi/Lazarusでの正規分布乱数の発生 | トップページ | Lazarus1.8RC4クロスコンパイルでの実行結果 »

2017.09.20

Lazarus1.8RC4とクロスコンパイル環境の構築

Lazarus1.8のRC4がリリースされていたのでインストール。

Windows32/64両方に対応出来るよう、Lazarus自体は32bit版を選択して、追加インストールファイルであるlazarus-1.8.0RC4-fpc-3.0.4rc1-cross-x86_64-win64-win32.exeも合わせてダウンロードし、最初に本体をインストール後Win64クロス環境をインストール。

で、起動すると各フォームが独立したクラシックスタイルで表示されます。Lazarus1.7で折角モダンなスタイルになっていたので1.8も同じようなスタイルにしてみました。

インストール直後の状態
Lazarus18

Lazarusのパッケージメニューからパッケージのインストールもしくはアンインストールを選択して、表示されたダイアログの右側のリストからAnchorDockingDsgn 0.5とsparta_DockedFormEditor 0.0をダブルクリックしてインストール対象に登録し、保存してIDEを再構築ボタンを押してしばし待つと、Lazarusが再起動してモダンスタイルに変更されます。この時、sparta_DockedFormEditor 0.0も一緒に登録しないと、フォームデザイナだけ独立フォームとなって面倒なことになりますので(と言うかなった)、必ず同時に登録しましょう。

Lazarus18mdn


Lazarus1.7(trunk)ではi386-Linuxのクロスコンパイル環境が標準で含まれていましたが、1.8RC4では(といいますか、通常のWindows版では)含まれていませんので、クロスコンパイル環境の構築にも挑戦してみました。

ということで、Web上の情報を色々と探したのですが、Windows上でMinGWやCygwin環境を構築してコマンドラインでごにょごにょするとか敷居の高い方法やfpcupコマンドを使用する方法が見つかりましたが、中々うまく行かず悩んでいたところで、GUIで操作できるfpcupdeluxeというものを発見。このfpcupdeluxeも中々うまくいかなかったのですが、やっとなんとかなる方法が見つかりましたのでまとめておきます。

まずfpcupdeluxeのソースコードをgithubからダウンロードします。

適当なフォルダに解凍して、Lazarusでプロジェクトファイルfpcupdeluxe.lpiを開いて実行ファイルを作成します。
次にfpcupdeluxe用の作業フォルダを作成して(ここの例ではC:\freepascal-master)、その中にサブフォルダfpcsrcを作成します。
続いてLazarus1.8RC4で使用しているFreePascal3.0.4のソースコードを取得ためにSubversion(SVN)クライアントを準備するのですが、ここではちょっと調べたところで使いやすそうだったTortoiseSVNをインストールして使用します。
https://ja.osdn.net/projects/tortoisesvn/から自分の環境にあったものをダウンロードしてインストールするとエクスプローラのコンテキストメニューからSVNの操作が出来るようになります。

エクスプローラで先程準備したC:\freepascal-master\fpcsrcを選択して右クリックし、コンテキストメニューからSVN Checkout...を実行すると以下のダイアログが表示されます。
Svncheckput

Tortoisesvn

ここでfpcupdeluxeをインストールしたフォルダ内のサブフォルダdeluxebinにあるfpcup.iniを開き、[ALIASfpcURL]タグ内にある3.0.4=の右側のアドレスをコピーして、このダイアログのURL of repository:に貼り付ける。あとはOKボタンを押せば、3.0.4のソースコードが全てフォルダ内にダウンロード出来ます。

ダウンロードが完了したら、fcpupdeluxe-xxx-xxx.exeを実行します(xxx-xxxはWindows32か64かで変わる)。
fpcupdeluxeが起動したら、まずは画面中央下の方にあるSetup+ボタンを押して設定ダイアログを開き、Include LCL with cross compiler (default=no)をONにして閉じます。
Fpcupsetting

次に左側のFPC Versionから3.0.4を選択、Lazarus versionからfixes1.8を選択します。
後は、作成したいクロスコンパイル環境に応じてCPUとOSを選択して、Install cross-compilerボタンを押せば必要なファイルの作成が始まるので、あとは終了のを待ちます・・・
Fpcupdelux

作成が終了すると、C:\freepascla-master\cross\binフォルダ内にcpu-os名のフォルダ(i386-linux等が出来ていますので、その中のファイル全てをLazarusをインストールしたフォルダ内のFreePascalフォルダ(例えばC:\Lazarusにインストールした場合は、C:\Lazarus\fpc\3.0.4\bin\i386-win32フォルダにコピーします。
尚、arm-linuxの場合にはファイル名を全てarm-linux-gnueabihf-xxxx.exeからgnueabihfを削除してarm-linux-xxxx.exeに変更する必要があります。
尚、一回の作業では必要なunitが作成されない場合がある(C:\freepascal-master\fpc\unit内にcpu-os名のフォルダとファイルがなければ作成されていない)ので、その場合はfpcupdeluxeで再度Install cross-compilerを実行すれば作成されると思います。
続いて、C:\freepascal-master\fpc\bin\i386-win32フォルダ内に作成されたppcrossXXX.exeも同様に上記フォルダにコピーします。
続いて、C:\freepascal-master\fpc\fpmkinstフォルダとC:\freepascal-master\fpc\unit内に作成されたcpu-osフォルダをそれぞれC:\lazarus\fpc\3.0.4\fpmkinstフォルダとC:\lazarus\fpc\3.0.4\unitsにコピーすればクロスコンパイル環境が出来上がります。

あとはLazarusのプロジェクトオプションの設定と対象で対象とするOSと対象とするCPUファミリーを選択すればそれらターゲット環境用の実行ファイルを作成出来るようになります。


この方法で試してみたのは以下の通りです。

i386-linux・・・環境作成OK.コンパイル・リンクは正常終了で多分OK
x86_64-linux・・・環境作成OK.リンクの途中でエラーとなるが原因は不明
arm-linux・・・環境作成OK.コンパイル・リンクは正常終了で多分OK
arm-android・・・環境作成の途中でエラーとなり、fpmkinstやunitの作成が出来ずに停止

多分OKというのは、実際にそれらの環境で実行出来るか確認出来ていないからです。そのうち暇があれば確認しようと思います。

|

« Delphi/Lazarusでの正規分布乱数の発生 | トップページ | Lazarus1.8RC4クロスコンパイルでの実行結果 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Lazarus1.8RC4とクロスコンパイル環境の構築:

« Delphi/Lazarusでの正規分布乱数の発生 | トップページ | Lazarus1.8RC4クロスコンパイルでの実行結果 »