0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WSL2上のUbuntuにLazarusを入れて、Linuxアプリを作ってみる

Posted at

はじめに

前回、Lazarus(on Windows)でLinuxアプリをコンパイルしようとして諦めたので、Linux(WSL2のUbuntu)にLazarusを入れて、ObjectPascalで書いたLinuxアプリを作ってみようと思います。

やったこと

本作業用のwsl環境を用意します

元々、開発用のUbuntu環境を入れているのですが、その環境にデスクトップ環境を入れたくなかったので、もう1つイメージを作りました。
こちらの記事を参考に用意しました)。

Ubuntuデスクトップ環境のセットアップ

Ubuntuにデスクトップ関係のパッケージを入れるのと、Windows側に表示用のX Serverアプリを入れます。
こちらの記事を参考にセットアップをおこないました)。

FPC・Lazarusのインストール

FPC(Free Pascalコンパイラ)Lazarus をUbuntu環境にインストールします。

Lazarusの公式ページから、debパッケージをダウンロードし、Ubuntu環境から見える場所にパッケージファイルを置きます。

次に、Ubuntu環境側で、debパッケージをインストールします。
(debパッケージのインストール方法はこちらの記事を参考にしました)。

インストールが完了すると、デスクトップ上にLazarusのアイコンが確認できます。
(最下段の左から3つ目の、チーターのアイコン)。
image.png

アイコンをクリックすると、LazarusのIDEが立ち上がりました。
image.png

サンプルのコンソールAppを実行してみる

新しいプロジェクトを作ります。
image.png

Console applicationを選択します。
image.png

クラス名とかは適当に入力します。
image.png

コンソールアプリ用のコードテンプレートが自動生成されます。
DoRunプロシージャ内にHello, Worldと表示するコードを書きます。

program SampleApp;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  Classes, SysUtils, CustApp
  { you can add units after this };

type

  { TSampleApp }

  TSampleApp = class(TCustomApplication)
  protected
    procedure DoRun; override;
  public
    constructor Create(TheOwner: TComponent); override;
    destructor Destroy; override;
    procedure WriteHelp; virtual;
  end;

{ TSampleApp }

procedure TSampleApp.DoRun;
var
  ErrorMsg: String;
begin
  // quick check parameters
  ErrorMsg:=CheckOptions('h', 'help');
  if ErrorMsg<>'' then begin
    ShowException(Exception.Create(ErrorMsg));
    Terminate;
    Exit;
  end;

  // parse parameters
  if HasOption('h', 'help') then begin
    WriteHelp;
    Terminate;
    Exit;
  end;

  { add your program here }
  writeln('Hello, World');  //■■■■■■■ここ追加したところ■■■■■■■

  // stop program loop
  Terminate;
end;

constructor TSampleApp.Create(TheOwner: TComponent);
begin
  inherited Create(TheOwner);
  StopOnException:=True;
end;

destructor TSampleApp.Destroy;
begin
  inherited Destroy;
end;

procedure TSampleApp.WriteHelp;
begin
  { add your help code here }
  writeln('Usage: ', ExeName, ' -h');
end;

var
  Application: TSampleApp;
begin
  Application:=TSampleApp.Create(nil);
  Application.Title:='SampleApp';
  Application.Run;
  Application.Free;
end.

IDE上でRunを実行すると、正常終了します。
とりあえず正常にビルドできていそうです。
image.png

実行ファイルをコンソール上で実行してみると、Hello, Worldと表示されました。
image.png

さいごに

とりあえず、WSL2上のUbuntuにLazarusを入れて、Linuxアプリを作って動かしてみるところまではできました。
引き続き、Object Pascalで作ったLinuxアプリをマネージドKubernetes上で動かすためのステップを踏んでいこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?