Pascal 日和 ホームページ









ソースネクスト

Free Pascal インストール



Free Pascal 3.2.2 のインストール




 事前に、「共通設定」ページを参照してください。
 インストールが完了したら「Free Pascal コンパイル環境」ページでコンパイル環境の作成も行ってください。




 Free Pascal は Pascal コンパイラの一つです。
 Free Pascal のWebサイトはこちらです ⇒ http://www.freepascal.org/

 Free Pascal は、ISO規格に準拠するのではなく、Borland社(現在のEmbarcadero社)の Turbo Pascal と Delphi の互換を目指して作成されています。その他、MacPascal のスタイルも取り入れている。Delphi とのRAD開発についての互換については、Lazarus として実装しています。Lazarus では Delphi の VCL にあたるコンポーネント群を LCL として持っています。Lazarus の IDE は Delphi 6 や Delphi 7 に似ています。ただし、言語仕様も操作も完全互換ではありません。
 Lazarus の 言語は Free Pascal です。

 Lazarus のWebサイトはこちらです ⇒ http://www.lazarus-ide.org/

 Free Pascal は、ISO互換路線ではありませんが、多くのプラットフォームをサポートし、Pascal 言語のデファクトスタンダードと言ってよいと思います。

 ここでは、Windows 32bit/64bit をターゲットとする開発環境をインストールします。




Free Pascal の入手


 以下のURLを開いてダウンロードサイトを開きます。

 ダウンロードサイトのURL ⇒ https://sourceforge.net/projects/freepascal/files/Win32/



 以下のダウンロードサイトが開いたら、最新のバージョンをクリックしてインストーラ一覧を表示します。




 「fpc-3.2.2.win32.and.win64.exe」をダウンロードします。「3.2.2」の部分は選択したバージョンになります。
 インストールした後は削除してよいので、ダウンロードの場所はどこでもかまいません。ファイル名のリンクをクリックするとダウンロードできます。
 このファイル一つで64bit版と32bit版のコンパイラをインストールできます。
 32bit Windowsの人は「fpc-3.2.2.i386-win32.exe」を選択してください。32bit版のコンパイラをインストールできます。

 その他のファイルも追加して使用できるクロスコンパイラです(fpc-3.2.2.i386-win32.cross.x86_64-win64.exeは上記に含まれているので不要です)。



Free Pascal Win32 & Win64 のインストール


 「fpc-3.2.2.win32.and.win64.exe」を実行するとWin32版とWin64版のインストールが始まります。



 Free Pascal のインストールディレクトリを指定します。特に問題なければ「C:\FPC\3.2.2」のままとし、[Next>]ボタンをクリックします。




 Free Pascal のコンポーネントのインストール方法が出るので、「Full instration」を選択し、[Next>]ボタンをクリックします。




 Windowsのスタートメニューの項目名を指定します。特に問題なければ「Free Pascal」のままとし、[Next>]ボタンをクリックします。




 拡張子とIDEの関連づけと、アイコンや設定ファイルの作成について聞いてきます。
 Free Pascalには、英語モードテキストベースのIDEが付いています。これと拡張子を関連づけるかどうか(最初の4つ)の設定は任意でかまいません。
 アイコンと設定ファイルの作成(下の4つ)はチェックしてください。設定したら、[Next>]ボタンをクリックします。




 インストールの準備ができたので、 [Install]ボタンをクリックします。




 インストールが開始します。完了するまで待ちます。




 リリースノートが表示されるので、読んだら、[Next>]ボタンをクリックしてください。




 セットアップが完了すると、終了画面が表示されます。[Finish]ボタンを押して閉じます。




 メモ帳で readme.txt が表示されます。問題がなければメモ帳を閉じて完了です。

 これで、Free Pascal の設定は完了です。ダウンロードした 「fpc-3.2.2.win32.and.win64.exe」 は削除してもかまいません。



Free PascalのPATHの設定


 Free Pascal の PATH(環境変数)の設定は、インストーラがシステムのプロパティで設定するので、特に何もすることはありません。
 インストーラで追加された PATH は、「C:\FPC\3.2.2\bin\i386-Win32」です。

 もし、システム設定を避けたければ、PATHの設定から削除し、以下の例のようなPATHを設定するコマンドスクリプトファイルを作成しても良いと思います。
 以下は、Free PascalのPATH設定コマンドスクリプスクリプトの例です。

@ECHO OFF
REM
REM Free Pascal 環境変数設定。
REM
CALL resetpath.cmd
PATH C:\FPC\3.2.2\bin\i386-Win32;%PATH%
 ※ resetpath.cmd は「共通設定」ページで作成したコマンドスクリプトファイルです。

 PATHが設定された状態でFree Pascalコンパイラ fpc.exe を実行すると、以下のようにヘルプメッセージが表示されます。以下は32bitコンパイラのヘルプメッセージです。

Microsoft Windows [Version 10.0.22631.3958]
(c) Microsoft Corporation. All rights reserved.

C:\PG>fpc
Free Pascal Compiler version 3.2.2 [2021/05/15] for i386
Copyright (c) 1993-2021 by Florian Klaempfl and others
C:\FPC\3.2.2\bin\i386-win32\fpc.exe [options] <inputfile> [options]
Only options valid for the default or selected platform are listed.
Put + after a boolean switch option to enable it, - to disable it.
 @<x>   Read compiler options from <x> in addition to the default fpc.cfg
 -a     The compiler does not delete the generated assembler file
     -a5        Don't generate Big Obj COFF files for GNU Binutils older than 2.25 (Windows, NativeNT)
     -al        List sourcecode lines in assembler file
     -an        List node info in assembler file (-dEXTDEBUG compiler)
     -ao        Add an extra option to external assembler call (ignored for internal)
     -ar        List register allocation/release info in assembler file
     -at        List temp allocation/release info in assembler file
 -A<x>  Output format:
     -Adefault  Use default assembler
     -Aas       Assemble using GNU AS
     -Amacho    Mach-O (Darwin, Intel 32 bit) using internal writer
     -Anasm     Assemble using Nasm
     -Anasmcoff COFF (Go32v2) file using Nasm
*** press enter ***


 「*** press enter ***」と表示されたら、エンターキーを押すとヘルプメッセージの続きが表示されます。




Free Pascal の Hello, world.




 本サイトでは、Free Pascal を OBJFPC モードで使用します。Free Pascal には、いくつかのモードがあり、モードごとに機能も変わります。
 OBJFPC モードは、Free Pascal の中で高機能であり、LazarusやCodeTyphonのIDEが生成するプログラムも OBJFPC モードです。
 また、ソースプログラムの文字コードは UTF-8 とします。LazarusやCodeTyphonのエディタもUTF-8で作成されます。
 コンパイルモードも文字コードも Free Pascal と Lazarus/CodeTyphon で合わせていきたいと思います。
 UTF-8のBOMの有無については、どちらでもコンパイルできますが、LazarusやCodeTyphonに合わせるとBOM無しとなります。


Free PascalのHollo, world. (その1)


 「はじめに」ページで示したPascal版 Hello, world. のメッセージを「世界よ、こんにちは。」に変えてコンパイルしたいと思います。日本語を含んだプログラムソースのコンパイルができるかどうかは結構重要な問題です。
 Free Pascalでは、文字コードはUTF-8を使用してください。

 C:\PG\FreePascal に Hello というサブディレクトリを作成し、その中に以下のプログラムを Hello.pas というファイルで保存してください。(プログラム部分のCopy&Pastができます)
 ファイルの拡張子は何でも良いのですが、Free Pascal は .pp または .pas としたいと思います。

 また、基本的には1つのプログラムは1つのサブディレクトリを用意して、その中でコンパイルします。ソースファイルは複数のときもあります。

 Free Pascalについての説明は別途行いますので、ここではこの通りに実行して、正しくコンパイルできる環境ができたことを確認してください。

{ Free PascalのHello, world.(日本語版) }

program Hello;

{$MODE OBJFPC}{$H+}
{$CODEPAGE UTF8}

uses
  SysUtils;

begin
  WriteLn(Output, '世界よ、こんにちは。')
end.

 コンパイラディレクティブの「{$H+}」は、「{$LONGSTRINGS ON}」の省略形です。どちらで記述しても同じです。

 Hello.pas をターゲットをWin32としてコンパイルして実行してみましょう。

C:\PG>CD FreePascal\Hello

C:\PG\FreePascal\Hello>fpc -Twin32 -Pi386 Hello.pas
Free Pascal Compiler version 3.2.2 [2021/05/15] for i386
Copyright (c) 1993-2021 by Florian Klaempfl and others
Target OS: Win32 for i386
Compiling Hello.pp
Linking Hello.exe
14 lines compiled, 0.1 sec, 68240 bytes code, 4260 bytes data

C:\PG\FreePascal\Hello>Hello
世界よ、こんにちは。

C:\PG\FreePascal\Hello>



 コンパイルは、「fpc Hello.pas」だけでもHello.exeが作成されますが、上記は「-T」でターゲットOS「-P」でターゲットCPUの指定を加えています。
 Hello.pas を UTF-8 で記述しても、コンパイルされたプログラムの出力は、Shift-JIS(コードページ932)となるので、正しく表示されます。

 以下の様にコンパイルするとWin64/x86_64をターゲットとすることができます。

C:\PG\FreePascal\Hello>fpc -Twin64 -Px86_64 Hello.pas
Free Pascal Compiler version 3.2.2 [2021/05/15] for x86_64
Copyright (c) 1993-2021 by Florian Klaempfl and others
Target OS: Win64 for x64
Compiling Hello.pas
Linking Hello.exe
14 lines compiled, 0.2 sec, 72688 bytes code, 5252 bytes data

C:\PG\FreePascal\Hello>Hello
世界よ、こんにちは。

C:\PG\FreePascal\Hello>




Free PascalのHollo, world. (その2)


 次にFree PascalのUnitを使用したモジュールプログラミングの Hello, wold. をコンパイルしてみましょう。
 プログラムの内容はモジュールプログラミングに適したものではなく、分割コンパイルのためのサンプルと考えてください。

 C:\PG\FreePascal に Hello2 というサブディレクトリを作成し、その中に以下のプログラムを Hello2.pas というファイルで保存してください。

{=============================================================================}
{= プログラム:Hello2                                                        =}
{=============================================================================}

program Hello2;

{$MODE OBJFPC}{$H+}
{$CODEPAGE UTF8}

uses
  SysUtils,
  SayHelloUnit;   { SayHelloUnit の利用 }

begin

  SayHelloEng(Output);    { SayHelloUnit の SayHelloEng の呼び出し }
  SayHelloJpn(Output);    { SayHelloUnit の SayHelloJpn の呼び出し }

end.


 同じ場所に以下のプログラムを SayHelloUnit.pas というファイルで保存してください。

{=============================================================================}
{= ユニット:SayHelloUnit                                                    =}
{=============================================================================}

unit SayHelloUnit;

{$MODE OBJFPC}{$H+}
{$CODEPAGE UTF8}

{=============================================================================}
{= 【インターフェース部】                                                    =}
{=============================================================================}

interface

uses
  SysUtils;

procedure SayHelloEng(var F : Text);

procedure SayHelloGmn(var F : Text);

procedure SayHelloJpn(var F : Text);


{=============================================================================}
{= 【実現部】                                                                =}
{=============================================================================}

implementation

{ 英語 }
procedure SayHelloEng(var F : Text);
begin
  WriteLn(F, 'Hello, World.');
end;

{ ドイツ語 }
procedure SayHelloGmn(var F : Text);
begin
  WriteLn(F, 'Hallo, Welt.');
end;

{ 日本語 }
procedure SayHelloJpn(var F : Text);
begin
  WriteLn(F, '世界よ、こんにちは。');
end;

end.


 同じ場所に以下のメイクスクリプトを makefile というファイルで保存してください。インデント部分はタブ文字にしてください。

#
# Hello2 の メイクファイル
#

MAIN  = Hello2
UNIT1 = SayHelloUnit

# Target Win32
FPCFLAGS = -Twin32 -Pi386
# Target Win64
#FPCFLAGS = -Twin64 -Px86_64

$(MAIN).exe : $(MAIN).pas $(UNIT1).ppu
	@rm -f $(MAIN).o
	fpc $(FPCFLAGS) -o$(MAIN).exe $(MAIN).pas

$(UNIT1).ppu : $(UNIT1).pas
	@rm -f $(UNIT1).o $(UNIT1).ppu
	fpc $(FPCFLAGS) $(UNIT1).pas

clean :
	rm -f $(MAIN).exe $(MAIN).o $(UNIT1).o $(UNIT1).ppu



 Hello2 をメイクして実行してみましょう。

C:\PG>CD FreePascal\Hello2

C:\PG\FreePascal\Hello2>make
fpc -Twin32 -Pi386 SayHelloUnit.pas
Free Pascal Compiler version 3.2.2 [2021/05/15] for i386
Copyright (c) 1993-2021 by Florian Klaempfl and others
Target OS: Win32 for i386
Compiling SayHelloUnit.pas
51 lines compiled, 0.0 sec
fpc -Twin32 -Pi386 -oHello2.exe Hello2.pas
Free Pascal Compiler version 3.2.2 [2021/05/15] for i386
Copyright (c) 1993-2021 by Florian Klaempfl and others
Target OS: Win32 for i386
Compiling Hello2.pas
Linking Hello2.exe
20 lines compiled, 0.1 sec, 68336 bytes code, 4260 bytes data

C:\PG\FreePascal\Hello2>Hello2
Hello, World.
世界よ、こんにちは。

C:\PG\FreePascal\Hello2>



 生成物(実行モジュール、ユニットファイル、オブジェクトファイル)の削除は、make clean で削除できます。

C:\PG\FreePascal\Hello2>make clean
rm -f Hello2.exe Hello2.o SayHelloUnit.o SayHelloUnit.ppu

C:\PG\FreePascal\Hello2>



 メインプログラム(Hello2.pas)と参照するユニット(SayHelloUnit.pas)のソースが同一フォルダにある場合、メインプログラムをコンパイルするだけで参照するユニットもコンパイルしてリンクしてくれます。makefileは不要です。

C:\PG\FreePascal\Hello2>fpc -Twin32 -Pi386 Hello2.pas
Free Pascal Compiler version 3.2.2 [2021/05/15] for i386
Copyright (c) 1993-2021 by Florian Klaempfl and others
Target OS: Win32 for i386
Compiling Hello2.pas
Compiling SayHelloUnit.pas
Linking Hello2.exe
71 lines compiled, 0.1 sec, 68336 bytes code, 4260 bytes data

C:\PG\FreePascal\Hello2>



 もし、参照するユニットのソースが別のフォルダにある場合は、「-Fu」オプションで指定すると探してくれます。
 SayHelloUnit.pas を C:\PG\FreePascal\MyUnit フォルダに移動した場合、「-FuC:\PG\FreePascal\MyUnit」と指定します。
 フォルダの指定は相対パス「-Fu..\MyUnit Hello2.pas」でもよいです。

C:\PG\FreePascal\Hello2>fpc -Twin32 -Pi386 -FuC:\PG\FreePascal\MyUnit Hello2.pas
Free Pascal Compiler version 3.2.2 [2021/05/15] for i386
Copyright (c) 1993-2021 by Florian Klaempfl and others
Target OS: Win32 for i386
Compiling Hello2.pas
Compiling C:\PG\FreePascal\MyUnit\SayHelloUnit.pas
Linking Hello2.exe
71 lines compiled, 0.1 sec, 68336 bytes code, 4260 bytes data

C:\PG\FreePascal\Hello2>



 ここまでできれば、Free Pascalの環境は完了です。
 うまくいかなかった場合は、「共通設定」ページと本ページを再度見直してください。



捕捉:Free Pascal付属のIDE - fp.exe


 Free Pascalには、fp.exe という IDE があります。
 これは Win32 版のみ対応で、英語モードで動作します。日本語モードでは正しく表示されません。
 漢字の入力もできません。

C:\PG\FreePascal\fp>CHCP 437


 コマンドプロンプトを CHCP コマンドで英語モード(コードページ:437)にします。

Active code page: 437
C:\PG\FreePascal\fp>fp


 fp を実行すると IDE が起動します。
 プログラムを書いて実行することができます。





 昔々のボーランド ターボ パスカル(Borland Turbo Pascal)を彷彿とさせる IDE です。

 詳細は割愛します。