Lazarus(ラザルス)はWindows、Linux、macosなどで動作するクロスプラットフォームの統合開発環境(IDE Integrated Development Environment)です。
統合開発環境はプログラミングをする際に必要なツール(ソフトウェア)を統合して、開発を進めていきます。
オープンソース のFree Pascal コンパイラ(FPC)向けに開発されました。
FPCはネイティブコンパイラ であるため、独立して動く実行ファイルを作成することができます。
アプリケーションの配布に必要なファイルは、実行ファイルだけでランタイムライブラリは必要ありません。
また、エンバカデロ・テクノロジーズのDelphiとも高い互換性があります。
Lazarusを使ってLinuxプログラミングを行うため、Object Pascal のコンパイラ(FPC)と、Lazarus本体をRaspberry PI4にインストールします。
Raspberry PI4を準備
32bit OS(Bullseye)をインストールしたRaspberry Pi4を使います。
FPCのインストール
Free Pascal コンパイラ(FPC)をインストールします。
「ラズベリーパイのアイコン」をクリックしドロップダウンメニューを開き、「設定」をクリックして「Add / Remove Software」を選択します。
ダイアログが表示されますので、検索ボックスに「fpc」と入力、「Enterキー」を押し、Free Pascal-SDK-3.2.0 suiteに✔を入れ「Apply」ボタンをクリックします。
FPCのダウンロードとインストールが始まります。(パスワードの入力を促されますので入力します。)
インストール終了後、「OK」をクリックしダイアログを閉じます。
Lazarusのインストール
Lazarus本体をインストールします。
FPCのインストールと同様な手順で、「Add / Remove Software」のダイアログを表示させます。
検索ボックスに「Lazarus」と入力、「Enterキー」を押し、IDE for Free Pascal - suiteに✔を入れ「Apply」ボタンをクリックします。
Lazarusのインストールが始まります。(パスワードの入力を促されますので入力します。)
インストール終了後、「OK」をクリックしダイアログを閉じます。
Lazarusの起動
「ラズベリーパイのアイコン」をクリックしドロップダウンメニューを開き、「プログラミング」をクリックして「Lazarus(2.0.10)」を選択します。
Lasarusが起動し、初期画面が表示されます。
「IDEを開始」をクリックすると「Error in EditorMacroScript」エラーのダイアログが表示されます。
パッケージ「 EditorMacroScript (pascalscript macros) が問題を検出し、無効にな りました。このパッケージは自己テストに失敗し、” Replace All[Exp: True ・・・・・・・・ ]
という内容で、Lazarusのフォーラムに、次のような回答があります。
arm では動作しない可能性があります。残念ながら、(現在のところ)各プラットフォーム や CPU に特化したアセンブラコードが必要です。 しかし、このメッセージは一度だけで、その後はディスク上のファイルが存在し、もはやロードしようとはしないはずです。 ( そしてメッセージも出ない )
古いバージョンから発生しているエラーであるとのことで、現在でも解決できていません。(調査不足かもしれませんが。)
「OK」をクリックするとLazarusの統合開発環境が表示されます。
Lazurusの「ファイル」をクリックしてメニューを開き、「終了」をクリックしてLazarusを終了します。
「ラズベリーパイのアイコン」をクリックしドロップダウンメニューを開き、「プログラミング」をクリックして「Lazarus(2.0.10)」を選択します。
先ほどのエラーは表示されずに、Lazarusの統合開発環境が起動します。
IDEウィンドウ
「ラズベリーパイのアイコン」をクリックしドロップダウンメニューを開き、「プログラミング」をクリックして「Lazarus(2.0.10)」を選択します。
Lazarusの統合開発環境が起動します。
Lazarusは「メインコントロールウィンドウ」、「オブジェクトインスペクタ」、「Lazarusソースエディタ」、「メッセージウィンドウ」等のフローティングウィンドウで構成されています。
起動時にはこの他にデフォルトのフォームが表示されます。
「フォーム」や「メッセージウィンドウ」が表示されていない場合は、「メニュー」の「表示」をクリックして該当するウィンドウ選択します。
メインコントロールウィンドウ
メインコントロールウィンドウは「メインメニュー」と「IDEスピードボタン」、「コンポーネントパレット」で構成されています。
「メインメニュー」には「ファイル」、「編集」、「検索」、「表示」等のメニューなどがあり、Lazarusの基本的な操作を行います。
「IDEスピードボタン」は「メインメニュー」でよく使われる「新規ユニット」、「開く」、「保存」、「すべて保存」、「新規フォーム」等のボタンが配置されています。
「コンポーネントパレット」にはフォームを作成する際に使われる「コンポーネント」(ボタン、ラベル、チェックボックス等の部品)のアイコンが表示され、用途によりタブで区分されています。
オブジェクトインスペクタ
フォーム上で選択されたコンポーネント(オブジェクト)のプロパティの変更やイベントの設定を行います。
Lazarusソースエディタ
アプリケーションのPascalコードを記述、表示するエリアです。
メッセージウィンドウ
コンパイラからのメッセージやエラー、進行状況を表示します。
GUIアプリケーション 「hogehoge」の作成
Lazarusは、ビジュアルコンポーネントのフォームを使ったGUIアプリケーションを開発することができます。
プロジェクトの新規作成
「ラズベリーパイのアイコン」をクリックしドロップダウンメニューを開き、「プログラミング」をクリックして「Lazarus(2.0.10)」を選択すると、Lazarusの統合開発環境が起動します。
メニューから「プロジェクト」をクリックするとダイアログが表示されますので、「名前を付けてプロジェクト保存を」クリックします。
プロジェクトを保存のダイアログが表示されますので、保存するフォルダを新規に作成するため「フォルダを作成」をクリックします。
名前の入力ボックスにプロジェクトを保存するフォルダ名「hogehoge」を入力し、「Enterキー」を押します。
ホームフォルダの中に「hogehoge」フォルダが作成されます。
プロジェクト名として「hoge.lpi」入力し「保存」をクリックします。
unitファイルの作成ダイアログが表示されますので、unit名として「unit_hoge.pas」を入力し「保存」をクリックします。
タイトルバーに設定したプロジェクト名が表示され、ソースエディタダイアログのステータスバーに設定したユニット名が表示されます。
「hogehoge」表示プログラム
Standardタブの「OK」アイコン(ボタン)をクリックし、Form1の任意の位置にクリックすると「Button1」がForm1の上に作成されます。
「フォーム」が表示されていないの場合は「F12キー」を押します。
同様に「Abc」アイコン(ラベル)をクリックし、Form1の任意の位置にクリックすると「Label1」がForm1の上に作成されます。
作成後、プログラムコードを作成するため、ソースエディタの任意の場所をクリックします。
オブジェクトインスペクタのコンポーネントリストに表示されている「Button1:TButton」をダブルクリックすると、ソースエディタウィンドウに「Button1」をクリックしたときの手続きの枠組みが自動的に用意されます。
「Form1」上の「Button1」をクリックすると「Label1」にhogehogeが表示されるコードを入力します。
【コードの詳細】
procedure TForm1.Button1Click(Sender: Tobject);
begin
Label1.Caption := 'hogehoge';
end;
入力後、実行ボタン「▶」をクリックするとビルドが開始され、実行されます。
メッセージボックスにコンパイルの結果が表示されます。
警告が出ています。詳細は後述します。
「Form1」上の「Button1」をクリックします。
「Label1」にhogehogeが表示されます。
停止ボタン「■」をクリックすると、「実行を停止しました」ダイアログが表示されますので、「OK」をクリックします。
メインメニューの「プロジェクト」をクリックし「プロジェクトを閉じる」を選択しプロジェクトを終了します。
プロジェクトウィザードが表示されますので、「Lazarusを終了」をクリックしLazarusを終了します。
アプリケーションの実行
プロジェクトを保存したフォルダであるhogehogeの内容を確認します。
左上のフォルダアイコンをクリックし、/home/ホームフォルダの中に作ったhogehogeフォルダをダブルクリックします。
hogehogeフォルダ内に実行ファイル「hoge」ができていますので、ダブルクリックします。
「ファイル実行する」ダイアログが表示されますので、「実行」をクリックします。
Form1が表示されますので「Button1」をクリックします。
Form1のLabe1が「hogehoge」表示になります。
確認後、Xをクリックしてアプリケーションhogeを終了します。
hogehogeフォルダを右上の「X」をクリックして終了します。
実行時の警告を解消
hogeを実行した時に、コンパイルは正常に行われますが、「crtbegin.o」ファイルが見つからないと警告が発生します。
プロジェクトをコンパイル対象:hoge: 成功、警告:2hoge.lpr(23,0) Warning: "crtbegin.o" not found, this will probably cause a linking failurehoge.lpr(23,0) Warning: "crtend.o" not found, this will probably cause a linking failure
LXTerminalを起動し、find /usr/lib -name crtbegin.oを入力した後「Enterキー」を押し、「crtbegin.o」ファイルを検索します。
「/usr/lib/gcc/arm-linux-gnueabihf/10」フォルダ内にあることがわかります。
LXTerminalを終了します。
Free Pascal コンパラの環境設定ファイル(fpc.cfg)内にある、ライブラリの検索パス(searchpath for libraries)に先に検索した「/usr/lib/gcc/arm-linux-gnueabihf/10」フォルダ情報を追加します。
fpc.cfgの編集をしますので、LXTerminalを起動します。
スーパーユーザの権限が必要になるため、「sudo nano /etc/fpc.cfg」を入力し「Enterキー」を押します。
パスワードを聞かれた場合は、入力します。
#searchpath for librariesのブロックの末尾に「-Fl/usr/lib/gcc/arm-linux-gnueabihf/10」を追加します。
追加後、「Ctrlキー」を押しながら、「xキー」を押して終了します。
「yキー」を押して変更を保存します。
「Enterキー」を押して終了させます。
「reboot」を入力し再起動します。
再起動後、Lazarusをメニューから起動します。
「プロジェクトウィザード」が表示されますので、「最近扱ったファイルを開く」をクリックし「/home/カレントフォルダ/hogeohge/hoge.lpi1」を選択します。
unit_hoge.pasファイルに変更がないとコンパイルを実行しないので、「hogehoge」のあとに「1234567890」を追加し、実行ボタン「▶」をクリックします。
メッセージボックスに警告が表示されずに実行されます。
「Button1」をクリックすると「Label1」に「hogehoge1234567890」が表示されます。
停止ボタン「■」をクリックすると、「実行を停止しました」ダイアログが表示されますので、「OK」をクリックします。
メインメニューの「プロジェクト」をクリックし「プロジェクトを閉じる」を選択しプロジェクトを終了します。
プロジェクトウィザードが表示されますので、「Lazarusを終了」をクリックしLazarusを終了します。
CUIアプリケーション 「Hello World」の作成
Lazarusは文字メッセージにより処理結果等を伝える、コンソールアプリケーションも開発できます。
プロジェクトの新規作成
Lazarが起動している場合は、メインメニューの「プロジェクト」をクリックし、「プロジェクトを閉じる」を選択しプロジェクトを終了します。
プロジェクトウィザードが表示されますので、「Lazarusを終了」をクリックしLazarusを終了します。
Lazarusをメニューから、再び起動します。
「プロジェクトウィザード」が表示されますので、「新規プロジェクト」をクリックします。
「新規にプロジェクトを作成」が表示されますので、「プログラム」を選択し「OK」をクリックします。
ソースエディタに「project1.lpr」が表示されます。
メインメニューの「プロジェクト」をクリックするとダイアログが表示されますので、「名前を付けてプロジェクト保存」をクリックします。
「プロジェクトを保存」が表示されますので、ホームフォルダをクリックします。
「フォルダを作成」をクリックし保存するフォルダを新規に作成します。
名前の入力ボックスにプロジェクトを保存するフォルダ名「hello_cui」を入力し、「Enterキー」を押します。
ホームフォルダの下に「hello_cui」フォルダが作成されます。
プロジェクト名として「hellocui.lpi」を「名前ボックス」に入力し「保存」をクリックします。
ソースエディタの表示が「hellocui.lpr」になります。
コンソール上に「Hello World」を表示させるコードを入力します。
【コードの詳細】
begin
writeln('Hello World');
readln;
end.
メインメニューの「実行」をクリックしダイアログ表示の「実行」をクリックします。
ビルドが開始され、正常に終了するとメッセージボックスに「プロジェクトをコンパイル対象:hellocui: 成功」が表示されます。
停止ボタン「■」をクリックすると、「実行を停止しました」ダイアログが表示されますので、「OK」をクリックします。
アプリケーションの実行
LXTerminalを起動しls ./hello_cuiコマンドを実行して、「hellocui」がビルドされていることを確認します。
./hello_cui/hellocuiを入力し「hellocui」を実行すると「Hello World」が表示されます。
確認後、「Ctrl + cキー」を押して終了します。
LXTerminalを終了します。
Lasarusでのビルドの度に、LXTerminalを起動するのは不便であるため、ビルド実行後LXTerminalを自動的に開きアプリを実行させます。
メインメニューの「実行」をクリックし「実行時引数」をクリックするとダイアログが表示されます。
「実行時引数」ダイアログの「アプリケーションの実行のアプリケーション起動を使用」に✔を入れ、テキストボックスに「/usr/bin/lxterminal -e ./hellocui」を入力し「OK」をクリックします。
実行ボタン「▶」をクリックするとビルドが開始された後、自動的にLXTerminalが起動します。
hellocuiが実行され「Hello World」が表示されます。
確認後、「Enterキー」を押すとLXTerminalが終了します。
「実行を停止しました」ダイアログが表示されますので、「OK」をクリックします。
アプリケーションの配布
作成したGUIアプリケーション、CUIアプリケーションを配布します。
GUIアプリケーションの配布
GUIアプリケーションのプロジェクトを保存したフォルダ「hogehoge」の内容をファイルマネージャで確認します。
【Lazarus(FPC)が生成するファイル】
拡張子 | ファイルの種類 |
なし | 実行ファイル(Windowsでは.exe) |
.ico | アイコンファイル |
.lpi | メインファイル(XMLフォーマット) |
.lpr | メインプログラムのソースファイル |
.lps | プロジェクトセッションのファイル |
.res | コンパイルされたリソースファイル |
.lfm | フォームレイアウトのファイル |
.pas | ユニットのソースファイル |
Lazarusで開発されたアプリケーションの実行ファイルは、ネイティブコンパイラ(FPC)が生成し独立して動きます。
配布するファイルは、拡張子のない「hoge」だけです。
CUIアプリケーションの配布
CUIアプリケーションのプロジェクトを保存したフォルダ「hellocui」の内容をファイルマネージャで確認します。
配布するファイルは、拡張子のない「hellocui」だけです。
実行ファイルサイズの縮小
プロジェクトのデバッグ中は、デバッガ用の情報を生成しコンパイルするよう、IDEに指示する必要があります。
そのため、実行ファイルサイズがかなり大きくなります。
アプリケーションを配布する場合は、デバッガ用の情報生成の設定をオフにしてコンパイルする必要があります 。
「hoge」プロジェクトを開いていない場合は、メニューからLazarusを起動し、「hoge」プロジェクトを開きます。
メインメニューの「プロジェクト」をクリックし、「プロジェクトを開く」をクリックするか、プロジェクトウィザードの「プロジェクトを開く」をクリックします。
hogehogeフォルダ内の「hoge.lpi」を選択し「開く」をクリックします。
ソースエディタが表示されない場合は、メインメニューの「プロジェクト」をクリックし「ユニット」を選択します。
「プロジェクトユニットを表示」から「unit_hoge.pas」を選択し「OK」をクリックするとソースエディタが表示されます。
※「フォーム」を表示したい場合は「F12キー」を押します。
ファイルマネージャでhogehogeフォルダ内の実行ファイル「hoge」のファイルサイズを確認すると27.6MiBになっています。
メインメニューの「プロジェクト」をクリックし、「プロジェクトオプション」を選択します。
ダイアログが表示されますので、「コンパイラオプション」の「デバッグ」選択します。
「Generate info for the debugger(slower / increses exe-size)」の✔を外し、「OK」をクリックします。
実行ボタン「▶」をクリックして実行、「Button1」をクリックして表示を確認します。
停止ボタン「■」をクリックすると、「実行を停止しました」ダイアログが表示されますので、「OK」をクリックします。
ファイルマネージャで「hoge」のファイルサイズを確認すると先ほどのサイズの約5分の1の5.4MiBになっています。
配布終了後は、「Generate info for the debugger(slower / increses exe-size)」の✔を入れて戻しておきます。
Lazarusを終了します。
実行ファイルのアイコン変更
ファイルマネージャでhogehogeフォルダ内の実行ファイル「hoge」を実行します。
タスクバーに「hoge」実行中のアイコンとフォーム名が表示されます。
Form1を右上の「X」をクリックして終了します。
Lazarusが起動している場合は、メインメニューの「プロジェクト」をクリックし、「プロジェクトを閉じる」を選択しプロジェクトを終了します。
「プロジェクトウィザード」ダイアログが表示されますので、「Lazarusを終了」をクリックします。
Lazarusをメニューから起動します。
「プロジェクトウィザード」ダイアログが表示されてますので、「最近扱ったファイルを開く」で「/home/ホームフォルダ/hogehoge/hoge.lpi」を選択します。
アイコンを から、に変更します。
メインメニューの「プロジェクト」をクリックし、「プロジェクトオプション」を選択します。
ダイアログが表示されますので、「アイコンを読み込む」をクリックします。
「ファイルを開く」ダイアログが表示されますので、「/usr/lib/lazarus/2.0.10/images/icons/cheetah.ico」を選択し「開く」をクリックします。
アイコンがチータに変更されたことを確認後、「OK」をクリックします。
実行ボタン「▶」をクリックし実行後、停止ボタン「■」をクリックすると、「実行を停止しました」ダイアログが表示されますので、「OK」をクリックします。
メインメニューの「プロジェクト」をクリックし「プロジェクトを閉じる」を選択しプロジェクトを終了します。
プロジェクトウィザードが表示されますので、「Lazarusを終了」をクリックしLazarusを終了します。
ファイルマネージャでhogehogeフォルダ内の実行ファイル「hoge」を実行します。
タスクバーに「hoge」実行中のアイコンがチータに変わります。
Form1を右上の「X」をクリックして終了します。
スタートメニューへ登録
アプリケーション「hoge」をスタートメニューの「その他」のカテゴリーに登録します。
「ラズベリーパイのアイコン」をクリックしドロップダウンメニューを開き、「設定」をクリックして「Main Menu Editor」を選択します。
「Main Menu Editor」ダイアログが表示されます。
「その他」を選択し、「新しいアイテム」をクリックすると「Launcher Properties」が表示されます。
Name:には「はじめてのLazarus」を入力します。
「Commamd:」右の「Brawse」クリックします。
「Choose a command 」ダイアログが表示されますので、「/home/ホームフォルダ/hogehoge/hoge」を選択し「OK」をクリックします。
「IMAGE」をクリックします。
「Choose an icon 」ダイアログが表示されますので、「/usr/lib/lazarus/2.0.10/images/icons/cheetah.ico」を選択し「OK」をクリックします。
「OK」をクリックして「Launcher Properties」を終了します。
「はじめてのLazarus」が追加されますので「OK」をクリックしてダイアログを終了します。
「ラズベリーパイのアイコン」をクリックしドロップダウンメニューを開き、「その他」をクリックして「はじめてのLazarus」を選択します。
「Form1」が表示され、「Button1」をクリックすると「hogehoge1234567890」が表示されます。
まとめ
Raspberry Pi4にLazarusをインストールして、Linux上で簡単なGUIとCUIアプリが、作成できることを確認しました。
作成したアプリの配布方法や、アプリのアイコンの方法についても確認できました。