SOLIDのソリューションを構成するファイル¶
ここでは、SOLID のソリューションを構成するファイルについて説明します
ソリューションファイル¶
概要¶
ソリューションは、プロジェクトの集合体です。ソリューションをビルドすることで、必要なプロジェクトのビルドが行われ、ロードモジュールが生成されます。
基本的には、アプリケーションと一対一対応します。ただし、ローダブルアプリケーションやDLLは、単独では動作できないものの、 ロードモジュールとしては独立しているので、それぞれが個々のソリューションに分割されています。
ファイルの拡張子¶
SOLID では、ソリューションファイルの拡張子は .ptsln です。
関連するファイル¶
- ソリューションプロパティ (拡張子は .props )
ソリューションと同一レベルのフォルダに置き、拡張子を除いたファイル名部分は、ソリューションファイルと同一にします。 ファイルフォーマットは XML 形式です。
- ロックファイル (拡張子は .lockdb )
SOLID-IDE でソリューションをオープンしていることを示すファイルで、SOLID-IDE により自動生成されます。 ソリューションをクローズするか SOLID-IDE を終了すると削除されます
- その他のファイル
設定等を保存するために自動生成されるファイル (拡張子 .ptsln.db.v2 .v12.ptsuo)
プロジェクトファイル¶
概要¶
プロジェクトは、ソリューションを構成するパーツです。それぞれが、静的ライブラリであったり、アプリケーションであったりします。ファイルフォーマットはXML形式です。
具体的には、SOLIDコアサービス、SOLID-OSのカーネル、ネットワークドライバ、ファイルシステム等が、それぞれプロジェクトとして、ソリューションを構成しています。
ソリューションを構成するプロジェクトのプロジェクトファイル名は、ソリューションファイルに記述されています。
ファイルの拡張子¶
SOLID では、プロジェクトファイルの拡張子は .ptproj です。
関連するファイル¶
フィルタファイル (拡張子は .ptproj.filters)
プロジェクトを構成しSOLID-IDEのソリューションエクスプローラに表示されるファイルが記述されています(XML形式)
ユーザ設定ファイル (拡張子は .ptproj.user)
デバッグプロパティに設定した内容が保存されています。(XML形式)
(optional)プロパティファイル (拡張子は .props)
プロジェクトによっては、プロジェクト固有のユーザマクロ等を設定したプロパティファイルがあります。 その場合は、プロジェクトファイルで Import されています
スタートアッププロジェクト¶
ソリューションを構成するプロジェクトの中に、1個だけスタートアッププロジェクトを指定する必要があります。
スタートアッププロジェクトのプロパティには、SOLID-IDE がデバッグ開始時に使用するデバッガ設定ファイルの場所や、 デバッグ開始にあたって必要な設定を記述しておきます。
スタートアッププロジェクトには、もう一つ重要な役割があり、boot を除くプロジェクトを最終的にリンクし、 仮想アドレス空間上のロードモジュールの生成です。プロジェクトのプロパティのリンカー設定に 必要な設定を書きます(通常はデフォルトのままで使います)。また、そのロードモジュールは後述するように、 <スタートアッププロジェクト名>.out になります。
注釈
スタートアッププロジェクトが無かったり、スタートアッププロジェクトのデバッグプロパティの設定が間違っていると SOLID-IDE からのデバッグができません。
ソースファイル等¶
概要¶
コンパイル対象となるソースファイルや、リンカースクリプト、メモリマップ設定ファイル等です。
ファイルの拡張子¶
ソースファイル (.c, .cpp, .h, .rst)
リンカースクリプト (.ld)
メモリマップ設定 (.smm)
ビルド生成物のフォルダとファイル¶
概要¶
SOLID-OS を使ったソリューションをビルドした際に生成されるファイル類について解説します。
ビルド出力フォルダ¶
ソリューションをビルドした結果のファイルが出力されるフォルダ(ビルド時に自動生成)について説明します。 ソリューション全体を一気に clean することは、これらのフォルダを削除することでも可能です。
ビルド出力フォルダ
ソリューションファイルと同じレベルに、<構成名>/<プラットフォームツールセット名>/ のフォルダが生成されます。 構成名は Debug, Debug_clang, Debug_tasan, Release, Release_clang となります。
プラットフォームツールセット名は、構成名により以下のように決まっています。
exeGCC_SOLID (GCC を使用する Debug, Release )
exeClang_SOLID (Clang を使用する Debug_clang, Debug_tasan, Release_clang)
例) 構成が Debug_clang の場合 Debug_clang/exeClang_SOLID が、デフォルトの出力フォルダになります。
pre プロジェクト生成物フォルダ
ソリューションファイルと同じレベルに、PreObjectOut/ フォルダが生成されます。 現時点(2022/05時点)では、memory_map.smm をコンパイルした以下のファイルが出力されます。
memory_map.c
memory_map.inc
memory_map.ld
主なビルド生成物ファイル¶
ロードモジュール等、ビルドの生成物の主なファイルについて解説します。
オブジェクトファイル類 (.o)
ソースファイルをコンパイルしてできるオブジェクトファイル ".o" は、 ビルド出力フォルダ以下に生成される、各プロジェクト名のフォルダに入っています
ロードモジュール (.out, .bin)
SOLID-OSを使ったソリューションをビルドすると、<スタートアッププロジェクト名>.out と solid_boot.out の 2つのロードモジュールファイル(デバッグ情報付き elf 形式)が生成されます。またそれぞれについて、デバッグ情報を 取り除いた <スタートアッププロジェクト名>.bin と solid_boot.bin (バイナリ形式)も同時に生成されます。
実際に、MMUが無効状態のターゲットにロードするのは solid_boot.out もしくは solid_boot.bin のどちらかで、状況に応じて使い分けます。
注釈
solid_boot.out/.bin には、<スタートアッププロジェクト名>.bin がデータとして含まれています。 solid_boot.out/.bin をMMUの無効状態のターゲットにロードしたのちに起動すると、 MMU の設定等を行った後、仮想アドレス空間に切り替えて、<スタートアッププロジェクト名>.bin の エントリにジャンプします。
<スタートアッププロジェクト名>.out は、デバッガでシンボル情報を参照するために使います。
SOLID独自形式ローダブルアプリケーション (.slo)
SOLID独自形式のローダブルアプリソリューションの生成物は、拡張子 .slo になります。 SOLID ローダーの API、 SOLID_LDR_LoadFile() の引数には、.out ではなく、.slo を指定します。
DLL (.so)
リロケータブルなローダブルモジュール DLL の生成物は、拡張子 .so になります。 SOLID ローダーの API、SOLID_LDR_LoadDLL() の引数には、.out ではなく、.so を指定します。