(57)【特許請求の範囲】
【請求項１】
演算装置により実行されるプログラムを生成するプログラム生成装置において、
各々が、プログラムコードを含むテキストセクションと前記プログラムコードで参照されるデータを含むデータセクションと前記プログラムコードで参照されないデータを含む付加情報セクションと、前記テキストセクションと前記データセクションと前記付加情報セクションに関する情報を保持する内部構成情報とから構成される複数の実行形式ファイルが入力される入力手段と、
前記複数の実行形式ファイルの各々から前記内部構成情報に基づいて前記テキストセクションを抽出するテキストセクション抽出手段と、
前記複数の実行形式ファイルの各々から前記内部構成情報に基づいて前記データセクションを抽出するデータセクション抽出手段と、
前記複数の実行形式ファイルの各々について、前記テキストセクションおよび前記データセクションの組の結合の順序を決定する結合順序決定手段と、
前記複数の実行形式ファイルの前記内部構成情報から、前記テキストセクションおよび前記データセクションに関する情報を抽出し、該抽出した複数の前記テキストセクションおよび前記データセクションに関する情報を前記結合順序決定手段から得た順序に基づいて結合し、結合内部構成情報を作成する内部構成情報結合手段と、
前記複数の実行形式ファイルの各々から複数の前記テキストセクションおよび前記データセクションの組を抽出し、該抽出された前記テキストセクションおよび前記データセクションの複数の組を前記結合順序決定手段から得た結合の順序に基づいて結合し、結合セクションを作成するセクション結合手段と、
前記結合内部構成情報を先頭として、前記結合内部構成情報と、前記結合セクションとを結合し、複合実行形式ファイルを生成する生成手段と
を備えることを特徴とするプログラム生成装置。
【請求項２】
メモリ空間上で再配置可能な再配置可能ファイルが入力される再配置可能ファイル入力手段と、
前記再配置可能ファイルを前記メモリ空間上で再配置して、オブジェクトファイルとリンクさせ、前記実行形式ファイルを生成する実行形式ファイル生成手段とを備え、
前記再配置可能ファイルをプログラムに追加できる機能を有する請求項１記載のプログラム生成装置。
【請求項３】
前記実行形式ファイルを作成可能なライブラリファイルを出力するライブラリ出力手段と、
前記ライブラリファイルから再配置可能なオブジェクトファイルを生成する再配置可能ファイル生成手段とを備え、
前記ライブラリファイルから得た再配置可能ファイルをプログラムに追加できる機能を有する請求項２記載のプログラム生成装置。
【請求項４】
複数の前記実行形式ファイルからの任意のものを選択するための選択手段と、
選択された前記実行形式ファイルを前記入力手段に引き渡す選択ファイル入力手段とを備え、
所望の前記実行形式ファイルをプログラムに追加できる機能を有する請求項１記載のプログラム生成装置。
【請求項５】
演算装置により実行されるプログラムを生成するプログラム生成装置におけるプログラム生成方法において、
前記プログラム生成装置は、
各々が、プログラムコードを含むテキストセクションと前記プログラムコードで参照されるデータを含むデータセクションと前記プログラムコードで参照されないデータを含む付加情報セクションと、前記テキストセクションと前記データセクションと前記付加情報セクションに関する情報を保持する内部構成情報とから構成される複数の実行形式ファイルを読み込み、
前記複数の実行形式ファイルの各々から前記内部構成情報に基づいて前記テキストセクションを抽出し、
前記複数の実行形式ファイルの各々から前記内部構成情報に基づいて前記データセクションを抽出し、
前記複数の実行形式ファイルの各々について、前記テキストセクションおよび前記データセクションの組の結合の順序を決定し、
前記複数の実行形式ファイルの前記内部構成情報から、前記実行形式ファイルの前記テキストセクションおよび前記データセクションに関する情報を抽出し、該抽出した複数の前記テキストセクションおよび前記データセクションに関する情報を前記決定された結合の順序に基づいて結合して結合内部構成情報を作成し、
前記複数の実行形式ファイルの各々から複数の前記テキストセクションおよび前記データセクションの組を抽出し、該抽出された前記テキストセクションおよび前記データセクションの複数の組を前記結合の順序に基づいて結合して結合セクションを作成し、
前記結合内部構成情報を先頭として、前記結合内部構成情報と、前記結合セクションとを結合し、前記演算装置により実行される複合実行形式ファイルを生成する
ことを特徴とするプログラム生成方法。
【請求項６】
メモリ空間上で再配置可能な再配置可能ファイルが入力され、
前記再配置可能ファイルを前記メモリ空間上で再配置して、オブジェクトファイルとリンクさせ、前記実行形式ファイルを生成し、
前記再配置可能ファイルをプログラムに追加する請求項５記載のプログラム生成方法。
【請求項７】
前記実行形式ファイルを作成可能なライブラリファイルを出力し、
前記ライブラリファイルから再配置可能なオブジェクトファイルを生成し、
前記ライブラリファイルから得た再配置可能ファイルをプログラムに追加する請求項６記載のプログラム生成方法。
【請求項８】
複数の前記実行形式ファイルからの任意のものを選択し、選択された前記実行形式ファイルを入力側に引き渡すようにして、所望の前記実行形式ファイルをプログラムに追加する請求項５記載のプログラム生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、機器への組込み用のソフトウェア開発システムなどに好適なプログラム生成装置及びプログラム生成方法に関する。
【０００２】
【従来の技術】
近年、各種の電子機器にマイクロプロセッサとソフトウェアを機器に組み込んで、ソフトウェアによる制御が行われることが多い。また、電話回線などに接続されて、ネットワーク上で通信を行う機能を有する種々の電子機器が開発されており、さらには、ネットワークを経由して機器を制御するためのソフトウェアモジュールを送受信する機能を有する機器も開発されつつある。
【０００３】
このような機器に対応した組込み用ソフトウェアでは、通信やソフトウェアモジュールの送受信を、基本ソフトウェアであるオペレーティングシステム（ＯＳ）のレベルからサポートすることが考えられている。
【０００４】
一般の組込み用ＯＳでは、システムモジュールは、ライブラリを主体として配布されている。ハードウェアに依存する一部のファイルは、ソースファイルとして提供されることもある。
【０００５】
プログラムの開発工程でプログラムの機能を拡張する場合には、ライブラリの追加により対応が図られる。システムファイルは、ライブラリであるため、ユーザーが開発したプログラムと一緒にリンクされることになる。プログラムの実行時に、その一部のモジュールを交換する場合には、このリンクされたシステムプログラムとユーザープログラムの外部に追加のモジュールを読み込むことにより対応が図られる。
【０００６】
ここで、一般的な組込み用ソフトウェアにおけるソフトウェア開発システムについて説明する。以下では、プログラミング言語としてＣ言語を用いる場合を例として説明するが、他の言語を用いる場合の基本的な処理も同様である。
【０００７】
図１９は、一般の組込みＯＳにおけるソフトウェア開発システムの一例を示している。
【０００８】
ヘッダファイル１０とソースファイル１１は、ユーザーが用意するファイルである。これらのファイルは、ユーザーにより作成されたファイルでも良く、ソフトウェア開発システムから提供されたファイルでも良い。
【０００９】
コンパイル情報１２は、コンパイラ１３に対してコンパイル形態を指定するオプション情報であり、例えばＣＰＵの種類や最適化の指示などである。
【００１０】
コンパイル処理部１４は、ターゲットとするハードウェアに適したコンパイラ１３，コンパイル情報１２，ヘッダファイル１０を使って、ソースファイル１１をコンパイルし、オブジェクトファイル１５を生成する。
【００１１】
ライブラリファイル１６は、ソフトウェア開発システムから提供されたライブラリでも良く、ユーザーにより予め作成されたライブラリでも良い。
【００１２】
リンク情報１７は、リンカ１８に対してリンク形態を指定するオプション情報である。
【００１３】
リンク処理部１９は、ターゲットとするハードウェアに適したリンカ１８と、リンク情報１７，ライブラリファイル１６を使って、複数のオブジェクトファイル１５をリンクし、１つの実行形式ファイル２０を生成する。
【００１４】
ここで、一般的な組込み用ソフトウェアにおけるソフトウェア開発手順について説明する。
【００１５】
図２０は、一般の組込みＯＳにおけるソフトウェア開発手順の一例を示している。
【００１６】
システムライブラリ２１は、ＯＳの機能を実現するプログラムを含むライブラリファイルである。
【００１７】
システムソースファイル２２は、ＯＳの機能を実現するプログラムを、ソースコードとして提供するファイルである。このシステムソースファイル２２をコンパイル処理部１４でコンパイルすることにより、オブジェクトファイル２３が生成される。なお、このようなシステムソースファイル２２が配布されるのは、一部のハードウェア依存部分に限られる場合が多い。
【００１８】
ユーザーソースファイル２４は、ユーザーにより機器の制御用に作成されたソースファイルである。このユーザーソースファイル２４がコンパイルされたファイルであるオブジェクトファイル２５が生成される。そして、システムライブラリ２１，オブジェクトファイル２３，オブジェクトファイル２５を、リンク処理部１９でリンクすることにより、１つの実行形式ファイル２０が生成される。
【００１９】
図２１は、上述したような従来の実行形式ファイルの一例である実行形式ファイル２０の内部構造を示している。
【００２０】
内部構成情報６１は、実行形式ファイル２０の先頭部分に位置し、後続の部分の内容を識別するための情報や、その長さについての情報などを含む。この内部構成情報６１を解析することにより、後続部分から必要な情報を抽出できるようにされている。
【００２１】
テキストセクション６２は、図２０に示したように、システムライブラリ２１，オブジェクトファイル２３，オブジェクトファイル２５のそれぞれから集められて結合されたプログラムコードである。
【００２２】
初期化データセクション６３は、同様に集められて結合された変数の初期値データである。
【００２３】
初期化不要データセクション６４は、同様に集められて結合された、初期値が決まっていない変数のデータエリアである。
【００２４】
デバック情報セクション６５は、変数名などのシンボル情報がプログラムのデバッグのために保存される領域である。組込み用ソフトウェアでは、このデバッグ情報セクション６５が最終的に削除されるように、リンカに指示がされる場合が多い。
【００２５】
このような実行形式ファイル２０の形式としては、例えばＥＬＦ（Executable and Linking Format ）やＣＯＦＦ（Common Object File Format ）が知られている。
【００２６】
また、ＯＳとして次のような例が挙げられる。
【００２７】
一般のコンピュータ用ＯＳでは、システムモジュールは、実行可能なファイル形式を主体として配布されている。また、一部のＯＳでは、ソースファイルが、同様に配布されることがあり、コンパイルされて実行可能なファイル形式に変換される。
【００２８】
プログラムの開発工程でプログラムの機能を拡張する場合には、実行可能なファイル形式化されたソースファイルが、追加されることにより対応が図られる。もしくは、プログラムの機能を拡張するために追加されるファイルが、いわゆるＤＬＬ（Dynamic Link Library）のようにライブラリ形式で提供されて、ユーザープログラムの実行時にＯＳ経由で実行される。
【００２９】
システムファイルが実行可能なファイルである場合は、そのシステムファイルが、ユーザーがプログラムを必要としたときに、ＯＳ経由でメモリ上に読み込まれて実行される。
【００３０】
プログラムの実行時に、その一部のモジュールを交換する場合には、ＯＳが、新たなファイルをメモリ上に読み込み、従来のファイルに対応するメモリの内容を破棄する。
【００３１】
このような、一般のコンピュータ用ＯＳをベースにした組込みソフトウェアの開発システムも提供されている。
【００３２】
また、最近利用されているプログラミング言語である、いわゆるＪａｖａでは、システムモジュールは、実行可能なファイル形式あるいはバイトコード（中間コード）を主体として配布されている。
【００３３】
バイトコードは、インタプリタでそのまま実行されるか、コンパイラを通すことにより実行可能なファイル形式にも変換される。
【００３４】
実行可能なファイル形式の内部構成は、例えば図２１に示したものと同様であり、１つのファイルに１つの実行プログラムだけが含まれている。なお、複数の実行プログラムが１つのファイルに圧縮・結合されることもあるが、それは複数のファイルが単に圧縮・結合されただけであり、図２１に示すファイル形式は維持されている。
【００３５】
プログラムの開発工程でプログラムの機能を拡張する場合には、バイトコードファイルの追加をすることにより対応が図られる。
【００３６】
また、プログラムの実行時に一部のモジュールを交換する場合には、ＯＳが、新たなファイルをメモリ上に読み込み、従来のファイルに対応するメモリの内容を破棄する。
【００３７】
このような、機器への組み込みにも対応するためのソフトウェアの開発システムが提供されている。
【００３８】
【発明が解決しようとする課題】
ところで、上述したような従来のオペレーティングシステム（ＯＳ）において、機器への組込みおよび実行時に、一部のモジュールを交換できる仕組みを考慮すると、以下の問題が生じる。
【００３９】
（１）  一般の組込み用ＯＳでは、ユーザーモジュールとシステムモジュールとがリンクされて１つの実行形式ファイルにされるため、その実行形式ファイルの実行時に、一部のモジュールを削除することが困難である。例えば、システムモジュールのプログラムコードが格納されるテキストセクションとユーザーモジュールのテキストセクションとは、１つに結合されてしまい分離することができない。
【００４０】
（２）  一般のコンピュータ用ＯＳでは、交換モジュールがファイルシステム上で管理されており、必要に応じてメモリ上への読込みやメモリからの削除が行われる。しかし、このような方法は、ファイルシステムをカーネルが提供する必要があり、カーネルの肥大化と必要メモリサイズの増大を引き起こすため、メモリサイズの制約が大きい組込みシステムでは望ましくない
（３）  各モジュールが通常のコンパイラで出力された実行形式そのままでは、ファイルサイズが大きく、ＲＯＭ（Read Only Memory：読み込み専用メモリ）に格納するときに無駄な容量を必要としていた。例えば、実行時に特定の値で初期化される必要がないデータに対して、通常は０で埋められた領域がファイル内に確保されている。この領域は、実行時には必要であるが、ファイルを保管しているときには削除しておき、実行時に０で初期化した同じサイズの領域をメモリ上に確保することにより再現できる。このような不要な情報が含まれている分だけＲＯＭのサイズを無駄に占有し、ファイル数が多い場合にはコストの上昇を招いている。
【００４１】
また、従来の組込み用ソフトウェアの開発システムにおいては、機器への組み込みの仕組みと、後から一部のモジュールを交換できるしくみを考慮した場合に、次の問題がある。
【００４２】
（４）  一般の組込み用オペレーティングシステム用の開発システムでは、一部のモジュール削除が可能になるような形式でプログラムを生成できない。
【００４３】
（５）  多数のモジュールがある場合、組込み用ソフトウェアの開発中に各モジュールをメモリ上に読み込む必要があり、実行形式ファイルの数が多いと手間がかかる。
【００４４】
（６）  コンパイラから出力された実行形式ファイルから、実行時に再構成可能で削除可能な領域を削除しないため、各モジュールのファイルサイズが大きい。
【００４５】
（７）  追加モジュールがライブラリ形式で提供されている場合は、実行時に一部のモジュールを削除可能になるような形式でファイルを生成するのが困難である。追加モジュールがソースファイルで提供されている場合は、実行時に一部のモジュールを交換可能になるような形式でファイルを生成することが可能であるが、ユーザーが、システムのソースファイルを適切にコンパイルする必要があり不便である。
【００４６】
本発明は、以上の点を考慮してなされたもので、一部のモジュールを後から交換できる仕組みを備えたオペレーティングシステムを使用した場合に好適な、組込みシステムのソフトウェア開発システムを提案しようとするものである。
【００４７】
【課題を解決するための手段】
上記の課題を解決するために提案する本発明のプログラム生成装置は、演算装置により実行されるプログラムを生成するプログラム生成装置において、各々が、プログラムコードを含むテキストセクションと前記プログラムコードで参照されるデータを含むデータセクションと前記プログラムコードで参照されないデータを含む付加情報セクションと、前記テキストセクションと前記データセクションと前記付加情報セクションに関する情報を保持する内部構成情報とから構成される複数の実行形式ファイルが入力される入力手段と、前記複数の実行形式ファイルの各々から前記内部構成情報に基づいて前記テキストセクションを抽出するテキストセクション抽出手段と、前記複数の実行形式ファイルの各々から前記内部構成情報に基づいて前記データセクションを抽出するデータセクション抽出手段と、前記複数の実行形式ファイルの各々について、前記テキストセクションおよび前記データセクションの組の結合の順序を決定する結合順序決定手段と、前記複数の実行形式ファイルの前記内部構成情報から、前記テキストセクションおよび前記データセクションに関する情報を抽出し、該抽出した複数の前記テキストセクションおよび前記データセクションに関する情報を前記結合順序決定手段から得た順序に基づいて結合し、結合内部構成情報を作成する内部構成情報結合手段と、前記複数の実行形式ファイルの各々から複数の前記テキストセクションおよび前記データセクションの組を抽出し、該抽出された前記テキストセクションおよび前記データセクションの複数の組を前記結合順序決定手段から得た結合の順序に基づいて結合し、結合セクションを作成するセクション結合手段と、前記結合内部構成情報を先頭として、前記結合内部構成情報と、前記結合セクションとを結合し、複合実行形式ファイルを生成する生成手段とを備えることを特徴とするものである。
また、本発明のプログラム生成方法は、演算装置により実行されるプログラムを生成するプログラム生成装置におけるプログラム生成方法において、前記プログラム生成装置は、各々が、プログラムコードを含むテキストセクションと前記プログラムコードで参照されるデータを含むデータセクションと前記プログラムコードで参照されないデータを含む付加情報セクションと、前記テキストセクションと前記データセクションと前記付加情報セクションに関する情報を保持する内部構成情報とから構成される複数の実行形式ファイルを読み込み、前記複数の実行形式ファイルの各々から前記内部構成情報に基づいて前記テキストセクションを抽出し、前記複数の実行形式ファイルの各々から前記内部構成情報に基づいて前記データセクションを抽出し、前記複数の実行形式ファイルの各々について、前記テキストセクションおよび前記データセクションの組の結合の順序を決定し、前記複数の実行形式ファイルの前記内部構成情報から、前記実行形式ファイルの前記テキストセクションおよび前記データセクションに関する情報を抽出し、該抽出した複数の前記テキストセクションおよび前記データセクションに関する情報を前記決定された結合の順序に基づいて結合して結合内部構成情報を作成し、前記複数の実行形式ファイルの各々から複数の前記テキストセクションおよび前記データセクションの組を抽出し、該抽出された前記テキストセクションおよび前記データセクションの複数の組を前記結合の順序に基づいて結合して結合セクションを作成し、前記結合内部構成情報を先頭として、前記結合内部構成情報と、前記結合セクションとを結合し、前記演算装置により実行される複合実行形式ファイルを生成することを特徴とするものである。
【００４８】
上記の本発明によれば、組込みシステムのソフトウェア開発システムにより開発された組込みプログラムは、オペレーティングシステム及び機器制御用プログラムの一部のモジュールを後から交換できる形式のプログラムファイルを生成できるようになる。
【００４９】
【発明の実施の形態】
以下に、本発明のプログラム生成装置及びプログラム生成方法の好ましい実施の形態について、図面を参照しながら説明する。
【００５０】
［１］  第１の実施の形態
まず、本発明のプログラム生成装置及びプログラム生成方法の第１の実施の形態であるソフトウェア開発システムについて説明する。以下では、プログラミング言語としてＣ言語を使う場合を例として説明するが、他のプログラミング言語を使う場合の基本的な処理も同様である。
【００５１】
図１は、本発明に係るソフトウェア開発システムの一構成例を示している。
【００５２】
ヘッダファイル３０とソースファイル３１は、ユーザーにより用意されるファイルである。これらは、ユーザーにより作成されたファイルでも良いし、システムから提供されたファイルであっても良い。
【００５３】
コンパイル情報３２は、コンパイラ３３に対してコンパイル形態を指定するオプション情報であり、例えばターゲットとするハードウェアのＣＰＵの種類や最適化の指示などである。このコンパイル情報３２は、図示していないシステム設定部で生成され、以下のような情報を含んでいる。
【００５４】
・コンパイラの名前とそのディレクトリ
・プログラムを動作させるハードウェアのＣＰＵを指定するコンパイルオプション
・読み込むべきヘッダファイルのディレクトリ情報
・浮動小数点演算ユニットの使用の有無のコンパイルオプション
・ソースファイル中に含まれるプリプロセッサ用マクロの値の定義
コンパイル処理部３４は、ターゲットとするハードウェアに適したコンパイラ３３，コンパイル情報３２，ヘッダファイル３０を使って、ソースファイル３１をコンパイルし、オブジェクトファイル３５を生成する。
【００５５】
ライブラリファイル３６は、システムが提供したライブラリでも良いし、ユーザーが予め作成したライブラリでも良い。
【００５６】
リンク情報３７は、リンカ３８に対してリンク形態を指定するオプション情報である。このリンク情報３７は、図示していないシステム設定部で生成され、以下のような情報を含んでいる。
【００５７】
・リンカの名前とそのディレクトリ
・出力ファイル形式設定，デバッグ情報追加のリンクオプション
・リンクすべきライブラリの情報
・ライブラリファイルに含まれるオブジェクトファイルの結合情報（複数のオブジェクトファイルのうち、どれとどれを結合すべきかを示す）
リンク処理部３９は、ターゲットとするハードウェアに適したリンカ３８と、リンク情報３７およびライブラリファイル３６を使って、オブジェクトファイル３５をリンクし、必要ならば適切なメモリ空間上の割り当てを行い、実行形式ファイル４０を生成する。
【００５８】
複合実行形式ファイル情報４１は、後述する複合実行形式ファイル４３に含めるべき実行形式ファイル４０についての情報を保持し、複合実行形式ファイル作成部４２に提供する。この複合実行形式ファイル情報４１は、図示していないシステム設定部で生成され、以下のような情報を含んでいる。
【００５９】
・複合実行形式ファイルに含まれる実行形式ファイルのモジュール名，ファイル名とそのディレクトリ
・各実行形式ファイルに割り当てられるべきモジュール属性情報（後述）のデータ（スタック領域サイズ，ヒープ領域サイズ，動作モード，動作優先順位等
・初期化プログラム７８の実行開始アドレス（モジュール数と共に後述する全構成情報に含まれる）
・複合実行形式ファイルの作成日時，バージョン，タイトルなど（後述する全体構成情報に含まれる）
複合実行形式ファイル作成部４２は、複合実行形式ファイル情報４１からの情報に基づき、初期化プログラム７８と複数の実行形式ファイル４０が入力され、後述する処理により複合実行形式ファイル４３を出力する。なお、初期化プログラム７８は、複合実行形式ファイル４３を実行するためのプログラムである。
【００６０】
本発明におけるオペレーティングシステムの複合実行形式ファイルは、メモリ上に展開されるべき実行形式ファイルの内部構成が、後述する図３および図４，図５のように編集されたファイルである。
【００６１】
次に、上述した第１の実施の形態におけるソフトウェア開発手順について説明する。
【００６２】
図２は、図１に例示したソフトウェア開発システムにおけるソフトウェア開発基本的な流れを示している。ここで、システムモジュールは、ソースファイルを主体として配布されている。
【００６３】
システムソースファイル８１，システムソースファイル８４は、ＯＳの機能および実現されるプログラムをソースコードとして提供するファイルである。このシステムソースファイル８１，システムソースファイル８４が、コンパイル処理部３４によりそれぞれコンパイルされて、オブジェクトファイル８２，オブジェクトファイル８５が生成される。
【００６４】
オブジェクトファイル８２，オブジェクトファイル８５は、リンク処理部３９によりそれぞれリンクされて、それぞれ１つの実行形式ファイル８３，実行形式ファイル８６が生成される。
【００６５】
ユーザーソースファイル８７は、ユーザーにより、機器の制御用に作成されたソースファイルである。このユーザーソースファイル８７を、コンパイル処理部３４でコンパイルすることにより、オブジェクトファイル８８が生成される。このオブジェクトファイル８８を、リンク処理部３９でリンクして、１つの実行形式ファイル８９が生成される。
【００６６】
そして、リンク処理部３９によって生成された実行形式ファイルに対応した複合実行形式ファイル作成部４２により、上記の実行形式ファイル８３，実行形式ファイル８６，実行形式ファイル８９が複合実行形式にまとめられて、１つの複合実行形式ファイル４３が生成される。
【００６７】
図３は、上記の複合実行形式ファイル４３の内部構造の一例を示している。
【００６８】
内部構成情報７１は、複合実行形式ファイル４３の先頭部分に位置し、後続の内容を識別するための情報や、その長さについての情報などを含む。この内部構成情報７１を解析することにより、必要な情報を後続部分から抽出できるようになっている。
【００６９】
テキストセクション７２，テキストセクション７４，テキストセクション７６は、それぞれ実行形式ファイル８３，実行形式ファイル８６，実行形式ファイル８９のプログラムコードである。
【００７０】
初期化データセクション７３，初期化データセクション７５，初期化データセクション７７は、それぞれ実行形式ファイル８３，実行形式ファイル８６，実行形式ファイル８９の変数の初期値データである。
【００７１】
初期化不要データセクション６４，初期化不要データセクション６６，初期化不要データセクション６８は、それぞれ実行形式ファイル８３，実行形式ファイル８６，実行形式ファイル８９の変数の初期化不要データセクションである。
【００７２】
デバッグ情報セクション６５，デバッグ情報セクション６７，デバッグ情報セクション６９は、それぞれ実行形式ファイル８３，実行形式ファイル８６，実行形式ファイル８９のデバッグ情報セクションである。
【００７３】
初期化プログラム７８は、内部構成情報７１に基づいて、テキストセクション７２，テキストセクション７４，テキストセクション７６と、初期化データセクション７３，初期化データセクション７５，初期化データセクション７７を適切なメモリ空間に割り当てて、テキストセクション７２，テキストセクション７４，テキストセクション７６のいずれかを実行するためのプログラムである。初期化プログラム７８自身は、通常の実行形式ファイルである。
【００７４】
なお、ファイルサイズを小さくするために、初期化不要データセクション６４，初期化不要データセクション６６，初期化不要データセクション６８、およびデバッグ情報セクション６５，デバッグ情報セクション６７，デバッグ情報セクション６９を含まない構成にしても良い。これは、初期化不要データセクションについては、後述する内部構成情報７１内のモジュール情報１８１に含まれる初期化不要データセッションサイズ１９４により、必要に応じて生成することが可能であるためである。また、デバック情報セクションについてはデバックに必要なものであるので、なくても問題はない。
【００７５】
プログラムの開発工程でプログラムの機能を拡張する場合には、ソースファイルがコンパイルされてリンクされた実行形式ファイルを、複合実行形式ファイル４３として生成する。
【００７６】
プログラムの実行時に一部のモジュールを交換する場合には、０Ｓが、新たな実行形式ファイルをメモリ上に読み込み、複合実行形式ファイルに含まれていた従来の機能に対応するメモリの内容を破棄する。
【００７７】
ここで、上述した内部構成情報７１について、さらに詳細に説明する。なお、以下では、図３に示した複合実行形式ファイル４３のように、３つの実行形式ファイル８３，実行形式ファイル８６，実行形式ファイル８９を含む複合実行形式ファイルの場合について説明する。
【００７８】
図４は、内部構成情報７１の構成を示している。
【００７９】
全構成情報１８０は、内部構成情報７１に含まれているモジュール（実行形式ファイル）の数であり、この場合は３となる。モジュール情報１８１，モジュール情報１８２，モジュール情報１８３は、それぞれ実行形式ファイル８３，実行形式ファイル８６，実行形式ファイル８９に対応する。すなわち、モジュール情報１８１は、テキストセクション７２と初期化データセクション７３に関する情報を保有し、モジュール情報１８２はテキストセクション７４と初期化データセクション７５に関する情報を保有し、モジュール情報１８３はテキストセクション７６と初期化データセクション７７に関する情報を保有している。
【００８０】
図５は、上述した内部構成情報７１のモジュール情報１８１の内部構成を示している。なお、モジュール情報１８２，モジュール情報１８３についても同様である。
【００８１】
この図５において、モジュール名１９１は、実行形式ファイル８３が含むモジュールの名前であり、モジュールを識別するために使用される。
【００８２】
テキストセクションサイズ１９２は、テキストセクション７２のサイズを表している。
【００８３】
初期化データセクションサイズ１９３は、初期化データセクション７３のサイズを表している。
【００８４】
初期化不要データセクションサイズ１９４は、初期化不要データセクション６４のサイズであり、実行時に複合実行形式ファイルが読み込まれた場合に、この初期化不要データセクションサイズ１９４で示されたメモリが確保されて初期化不要データセクション用に割り当てられる。
【００８５】
モジュール属性情報１９５は、そのモジュールの実行時に必要な属性情報であり、例えば必要なスタックサイズやヒープサイズなどである。
【００８６】
テキストセクションアドレス１９６は、テキストセクション７２が置かれるべきメモリ空間上のアドレスであり、テキストセクション７２が予め特定のアドレス上に配置されるべくリンクされている場合に必要である。
【００８７】
初期化データセクションアドレス１９７は、初期化データセクション７３が置かれるべきメモリ空間上のアドレスであり、初期化データセクション７３が予め特定のアドレス上に配置されるべくリンクされている場合に必要である。
【００８８】
実行開始アドレス１９８は、テキストセクション７２で最初に呼ばれるべきアドレスであり、このアドレスから処理を開始することにより、テキストセクション７２に格納されている実行ファイル８３のモジュールは動作を開始する。
【００８９】
内部構成情報７１のサイズは、全体構成情報１８０と、モジュール情報１８１，モジュール情報１８２，モジュール情報１８３の各サイズから計算できる。従って、テキストセクション７２は、複合実行形式ファイル４３の先頭から内部構成情報７１のサイズだけ後からテキストセクションサイズ１９２のサイズだけ読み込めばよい。
【００９０】
同様に、初期データセクションサイズ１９３は、複合実行形式ファイル４３の先頭から内部構成情報７１のサイズとテキストセクションサイズ１９２の合計だけ後から初期化データセクションサイズ１９３のサイズだけ読み込めばよい。テキストセクション７４以下の部分についても同様に読み込むことが可能である。
【００９１】
図６は、図３に示した複合実行形式ファイル４３の全てが、ＲＡＭ（Random Access Memory：読み書き可能なメモリ）上に読み込まれた場合の例を示している。
【００９２】
まず、初期化プログラム７８が、図示していない通常のプログラム起動処理部より起動されて、メモリ上に配置されて実行される。
【００９３】
続いて、初期化プログラム７８が、図示していないＲＯＭ（Read Only Memory：読出専用メモリ）に記録されている複合実行形式ファイル４３を読み出して、その内部構成情報７１を解析し、上記の複合実行形式ファイル４３内部の各セクションを、図６のようにメモリ（ＲＡＭ）上に割り当てる。
【００９４】
複合実行形式ファイル４３に初期化不要データセクション６４，初期化不要データセクション６６，初期化不要データセクション６８の実体が確保されておらず、内部構成情報７１にそれぞれのサイズが記録されているだけである場合は、初期化プログラム７８が、指定されたサイズに基づいて初期化不要データセクション６４，初期化不要データセクション６６，初期化不要データセクション６８をメモリ上に確保する。
【００９５】
最後に、初期化プログラム７８は、テキストセクション７２，テキストセクション７４，テキストセクション７６のいずれかに制御を渡して実行を終了する。
【００９６】
例えば、実行がテキストセクション７２に移り、テキストセクション７２はメモリを管理する機能を持ち、初期化データセクション７３が各データセクションのアドレス情報を含んでいる場合には、初期化プログラム７８が占有するメモリを開放して別の用途に使用することが可能である。
【００９７】
また、実行途中で、テキストテクション７６，初期化データセクション７７，初期化不要データセクション６８が不要になった場合に、テキストセクション７６のプログラムがテキストセクション７２のプログラムにメモリの開放を伝えることにより、これらの不要になった各セクションのメモリ領域が開放されて他のプログラムにより利用可能にすることができる。
【００９８】
複合実行形式ファイル中に、後述するデバッグ情報セクションに対応するデバッグ情報セクションが含まれている場合には、それらは、メモリ上には読み込まれずデバッガから参照される。
【００９９】
図７は、図３に示した複合実行形式ファイル４３のデータセクションのみがＲＡＭ上に読み込まれ、テキストセクションはＲＯＭから直接参照される場合のメモリ配置の例を示している。
【０１００】
すなわち、テキストセクション７２，テキストセクション７４，テキストセクション７６はＲＯＭ上に記録されており、初期化データセクション７３，初期化データセクション７５，初期化データセクション７７、および初期化不要データセクション６４，初期化不要データセクション６６，初期化不要データセクション６８はＲＡＭ上に割り当てられている。
【０１０１】
なお、図６と同様に、初期化データセクション７３，初期化データセクション７５，初期化データセクション７７、および初期化不要データセクション６４，初期化不要データセクション６６，初期化不要データセクション６８も、最初はＲＯＭ上に記録されており、初期化プログラム７８によりＲＡＭ上にコピーされる。この場合にも、図６の場合と同様に、その後の不要セクションの削除と再利用が可能である。
【０１０２】
次に、図２の複合実行形式ファイル作成部４２について説明する。
【０１０３】
図８は、複合実行形式ファイル作成部４２の一構成例を示している。
【０１０４】
結合順序決定部１２４は、複合実行形式ファイル情報４１から実行形式ファイル４０のリストを入手して、それらの結合順序を決定する。
【０１０５】
ファイル入力部１２１は、結合順序決定部１２４が決定した結合順序に基づいて実行形式ファイル４０を読み込む。この実行形式ファイル４０の構成は、図２１に示した従来の実行形式ファイル２０の構成と同様であるので、以下では、実行形式ファイル２０内部の各セクションと同一の指示符号を用いて説明する。
【０１０６】
テキストセクション抽出部１２２は、ファイル入力部１２１から実行形式ファイル４０を受け取り、その内部構成情報６１を解析してテキストセクション６２を取り出す。
【０１０７】
データセクション抽出部１２３は、ファイル入力部１２１から実行形式ファイル４０を受け取り、その内部構成情報６１を解析して初期化データセクション６３を取り出す。
【０１０８】
内部構成情報結合部１２５は、各実行形式ファイル４０の内部構成情報６１からテキストセクション６２，初期化データセクション６３に関する部分を抽出し、ファイル入力部１２１からの入力順序に従ってそれらを結合し、ヘッダ情報である内部構成情報７１を生成する。
【０１０９】
複合実行形式ファイル出力部１２７は、テキストセクション抽出部１２２からのテキストセクション６２と、データセクション抽出部１２３からの初期化データセクション６３とを、テキストセクション抽出部１２２およびデータセクション抽出部１２３からの入力順序に従い結合し、テキストセクション７２，テキストセクション７４，テキストセクション７６、初期化データセクション７３，初期化データセクション７５，初期化データセクション７７を生成する。そして、内部構成情報７１，テキストセクション７２，テキストセクション７４，テキストセクション７７と、初期化プログラム７８を読み込み、１つの複合実行形式ファイル４３として出力する。
【０１１０】
図９は、複合実行形式ファイル作成部４２の別の構成例を示している。
【０１１１】
ファイル入力部１２１は、複合実行形式ファイル情報４１に基づいて実行形式ファイル４０を読み込む。
【０１１２】
テキストセクション抽出部１２２は、ファイル入力部１２１から実行形式ファイル４０を受け取り、その内部構成情報６１を解析してテキストセクション６２を取り出す。
【０１１３】
データセクション抽出部１２３は、ファイル入力部１２１から実行形式ファイル４０を受け取り、その内部構成情報６１を解析して初期化データセクション６３を取り出す。
【０１１４】
結合順序決定部１２４は、複合実行形式ファイル情報４１から実行形式ファイル４０のリストを入手して、それらの結合順序を決める。
【０１１５】
内部構成情報結合部１２５は、各実行形式ファイル４０のヘッダ情報である内部構成情報６１からテキストセクション６２および初期化データセクション６３に関する部分を抽出し、結合順序決定部１２４からの結合順序に従ってそれらを結合し、内部構成情報７１を生成する。
【０１１６】
セクション結合部１２６は、テキストセクション抽出部１２２からのテキストセクション６２と、データセクション抽出部１２３からの初期化データセクション６３とを、結合順序決定部１２４からの結合順序に従い結合し、テキストセクション７２，テキストセクション７４，テキストセクション７６、初期化データセクション７３，初期化データセクション７５，初期化データセクション７７を生成する。そして、複合実行形式ファイル出力部１２７は、内部構成情報７１，テキストセクション７２，テキストセクション７４，テキストセクション７６、初期化データセクション７３，初期化データセクション７５，初期化データセクション７７と、初期化プログラム７８を読み込み、１つの複合実行形式ファイル４３として出力する。
【０１１７】
なお、図８に示した構成では、上記のセクション結合部の機能を複合実行形式ファイル出力部１２７が含んでいる。
【０１１８】
上記の第１の実施の形態においては、実行形式ファイル８３，実行形式ファイル８６，実行形式ファイル８９を１つの複合実行形式ファイル４３にまとめることにより、１つのファイルを読み込むだけでプログラムを実行可能にする。
【０１１９】
例えば、実行時に、実行形式ファイル８３を置き換えたい場合に、メモリ空間上に割り当てられたテキストセクション７２および初期化データセクション７３を廃棄すればよく、複合実行形式ファイル４３の実行時に、その一部のモジュールを交換することが可能である。
【０１２０】
また、複合実行形式ファイル４３には、初期化不要データセクション６４，デバッグ情報セクション６５が含まれていないため、ファイルサイズが最小限ですみ、ＲＯＭ上の記憶サイズも必要最小限しか必要としない。
【０１２１】
システムモジュールを追加する場合も、そのシステムモジュールがライブラリとして実行形式ファイルにリンクされるのではなく、実行形式ファイルを複合実行形式ファイル４３に追加すればよい。また、複合実行形式ファイル４３中の実行形式ファイル８３，実行形式ファイル８６，実行形式ファイル８９のいずれかが不必要になった際には、不必要になったファイルのみを削除することが可能である。
【０１２２】
また、ファイルシステムがなくても複数のモジュールを導入可能であるなどのメリットがある。
【０１２３】
［２］  第２実施の形態
次に、本発明の第２の実施の形態としてのソフトウェア開発システムについて説明する。以下の説明においても、前述した第１の実施の形態において説明した各部と共通する部分には、同一の指示符号を付す。
【０１２４】
図１０は、本発明に係る第２の実施の形態としてのソフトウェア開発システムにおけるソフトウェア開発手順の一例を示している。
【０１２５】
再配置可能ファイル９０は、その内部構造が実行形式ファイル９５とほぼ同じであるが、メモリ空間上で再配置可能であり、これから特定のメモリ空間に割り当てることも可能な形式であることが異なる。
【０１２６】
実行形式ファイル９５は、メモリ空間上で固定の位置に配置済みであるか、メモリ空間上で任意の位置に配置可能のいずれかである。この実行形式ファイル９５は、この特性を変更することはできないか、できるとしても再配置可能ファイル９０から変更する場合に比べて無駄なプログラムサイズを必要とする。
【０１２７】
リンク処理部９４は、図１に示した構成におけるリンク処理部３９の機能を包含しており、さらに再配置可能ファイル９０を他のオブジェクトファイル３５などとリンクした上で、必要ならば適切なメモリ空間上の割り当てを行い、実行形式ファイル９５として出力する。
【０１２８】
オブジェクトファイル抽出部９２は、システムオブジェクトファイルを含むライブラリファイル９１からオブジェクトファイル９３を取り出してリンク処理部９４に渡す。
【０１２９】
また、リンク処理部９４は、複数のオブジェクトファイル９３から直接実行形式ファイル９５を生成する。このリンク処理部９４とオブジェクトファイル抽出手段９２とにより、再配置可能ファイル生成手段を構成する。
【０１３０】
次に、本発明の第２の実施の形態におけるソフトウェア開発手順について説明する。
【０１３１】
前述した第１の実施の形態においても説明したように、図１０中のライブラリファイル３６は、システムライブラリまたはユーザーライブラリ、またはリンカ３８に付属のライブラリである。リンカ３８は、オブジェクトファイル３５もしくは再配置可能ファイル９０から参照されているライブラリファイル３６中のオブジェクトファイルを抽出して、オブジェクトファイル３５と結合する。
【０１３２】
ライブラリファイル９１は、システムライブラリであり、他のファイルからの参照関係なしに、ライブラリファイル９１に含まれるオブジェクトファイル９３どうしを結合することにより、実行形式ファイル９５を生成するためのものである。つまり、ライブラリファイル９１は、ソースファイル３１やオブジェクトファイル３５，再配置可能ファイル９０なしで、ライブラリファイル９１だけから実行形式ファイル９５を作成することを可能にする。
【０１３３】
図１１および同図に続く図１２は、本発明の第２の実施の形態におけるソフトウェア開発手順の一例を示している。システムモジュールは実行形式ファイルまたは再配置可能ファイルを主体として配布されている。
【０１３４】
ここで、システムオブジェクトファイル１０６，システムオブジェクトファイル１０７が、上述した場合に相当する。
【０１３５】
なお、図１０中のオブジェクトファイル抽出部９２は、ライブラリファイル９１から、どのファイルを抽出すべきかの情報を、リンク情報３７を読み込んだリンク処理部９４から得る。
【０１３６】
システム実行形式ファイル９９は、単体でシステムモジュールとして有効な動作が可能であり、複合実行形式ファイル作成部４２により複合実行形式ファイル９６に直接組み込み可能とされる。
【０１３７】
同様に、システム再配置可能ファイル１００も、単体でシステムモジュールとして有効な動作が可能であり、リンク処理部９４でシステム実行形式ファイル１０１に変換された上、複合実行形式ファイル作成部４２により複合実行形式ファイル９６に直接組み込み可能とされる。
【０１３８】
システム再配置可能ファイル１０２は、システムモジュールとして動作するためにはシステムソースファイル１０３とリンクされる必要があるものである。
【０１３９】
システムソースファイル１０３は、コンパイル処理部３４でコンパイルされてオブジェクトファイル１０４となり、さらに、リンク処理部９４でシステム再配置可能ファイル１０２とリンクされて実行形式ファイル１０５となる。
【０１４０】
システムオブジェクトファイル１０６およびシステムオブジェクトファイル１０７は、リンク処理部９４で互いにリンクされて実行形式ファイル１０８となる。
【０１４１】
システムオブジェクトファイル１０９は、システムソースファイル１１０がコンパイルされたものであるオブジェクトファイル１１１とリンクされて、実行形式ファイル１１２となる。
【０１４２】
また、ユーザーソースファイル１７１は、コンパイル処理部３４によりコンパイルされてオブジェクトファイル１７２となり、さらに、リンク処理部９４でシステム再配置可能ファイル１２０とリンクされて実行形式ファイル１７３となる。
【０１４３】
ユーザーソースファイル１７５は、コンパイル処理部３４によりコンパイルされてオブジェクトファイル１７６となり、さらに、リンク処理部９４でシステムオブジェクトファイル１７４とリンクされて実行形式ファイル１７７となる。
【０１４４】
これにより、システム再配置可能ファイル１２０またはシステムオブジェクトファイル１７４に対して、ユーザーが、一部の情報を設定することが可能である。
【０１４５】
そして、複合実行形式ファイル作成部４２は、システム実行形式ファイル９９，システム実行形式ファイル１０１，実行形式ファイル１０５，実行形式ファイル１０８，実行形式ファイル１１２，実行形式ファイル８９、および実行形式ファイル１７３，実行形式ファイル１７７から、複合実行形式ファイル９６を生成する。
【０１４６】
この第２の実施の形態においては、システムモジュールをシステム実行形式ファイル９９や再配置可能ファイル１００，再配置可能ファイル１０２を主体として配布することにより、ユーザー側でのコンパイル時間を削減することが可能である。また、図示していないライブラリファイル９１から、システムオブジェクトファイル１０６，システムオブジェクトファイル１０７，システムオブジェクトファイル１０９を提供することによっても、ユーザー側でのコンパイル時間を削減することが可能である。
【０１４７】
［３］  第３の実施の形態
次に、本発明の第３の実施の形態としてのソフトウェア開発システムについて説明する。
【０１４８】
図１３は、本発明に係る第３の実施の形態としてのソフトウェア開発手順の一例を示している。
【０１４９】
この第３の実施の形態は、システム全体の構成は第１および第２の実施の形態と同じであり、両者と共に用いることが可能である。ただし、コンパイル情報３２，リンク情報３７，複合実行形式ファイル情報４１が固定ではなく、ユーザーにより変更可能になっている点が異なっている。
【０１５０】
システム情報５０は、このソフトウェア開発システムが対応可能なターゲットハードウェア，コンパイラ，リンカなどのソフトウェアについての情報を保持している。また、システム実行形式ファイル，システム再配置可能ファイルなどのシステムファイルについてのリストと対応する説明文なども保持している。
【０１５１】
表示部５１は、ユーザーとの間で対話的にシステムの設定を行うための表示装置であり、例えばソフトウェア開発用コンピュータのディスプレイ装置である。
【０１５２】
入力部５２は、表示部５１に表示された内容に対するユーザーの応答を入力する装置であり、例えばソフトウェア開発用コンピュータのキーボードやマウスである。
【０１５３】
システム設定部５３は、システム情報５０を読み込み、ソフトウェア開発システムに関する情報をシステム情報５０に基づいて表示部５１に出力し、入力部５２からの選択結果を受け取る。そして、システム設定部５３は、システム情報５０と入力部５２からの入力結果に基づいて、コンパイル情報，リンク情報，複合実行形式ファイル情報を出力する。
【０１５４】
次に、本発明の第３の実施の形態におけるシステムの設定手順について説明する。
【０１５５】
図１４は、本発明の第３の実施の形態におけるソフトウェア開発手順の一例を示している。
【０１５６】
まず、ステップＳ１１で、システム設定部５３が、システム情報５０を読み込む。
【０１５７】
次に、ステップＳ１２で、システム設定部５３が、システム情報５０からサポートしている目標（ターゲット）ハードウェアのリストを参照し、複数の目標ハードウェアが挙げられている場合には表示部５１に目標ハードウェアの選択肢を表示する。ユーザーは、入力部５２でその選択肢に対して選択を行う。
【０１５８】
図１５は、このステップＳ１２において目標ハードウェアを選択するための、表示部５１の表示例を示している。ユーザーは、マウスなどの入力部５２により、希望の目標ハードウェアに対応したボタン１３０，ボタン１３１，ボタン１３２のいずれかを選択して、ボタン１３５を押下することにより目標ハードウェアを選択する。ボタン１３３はこの直前の設定に戻る場合に押下するボタンであり、ボタン１３４はシステム設定を中止する場合に押下するボタンである。
【０１５９】
次に、ステップＳ１３で、システム設定部５３が、このソフトウェア開発システムがサポートしているコンパイラのリストをシステム情報５０から参照し、複数のコンパイラが挙げられている場合には表示部５１にコンパイラの選択肢を表示する。ユーザーは、入力部５２でその選択肢に対して選択を行う。
【０１６０】
次に、ステップＳ１４で、システム設定部５３は、システム情報５０からシステムモジュールのリストを参照し、ユーザーが選択可能であるシステムモジュールについて選択肢を表示部５１に表示する。ユーザーは入力部５２でその選択肢に対して選択を行う。
【０１６１】
図１６は、このステップＳ１４において組込みモジュールを選択するための、表示部５１の表示例を示している。ユーザーは、必要なサービスに対応したボタン１４０，ボタン１４１，ボタン１４２を任意の数だけ選択した後、ボタン１３５を押下することにより組込みモジュールを選択する。ボタン１４０，ボタン１４１，ボタン１４２を選択することによりサービスを提供するために必要なモジュールが選択される。また、ボタン１４０，ボタン１４１，ボタン１４２には、システムモジュールと共にユーザーモジュールの登録も可能であり、ボタン１４３を選択することにより、ユーザーが開発したモジュールを登録することができる。
【０１６２】
次に、ステップＳ１５で、ステップＳ１３で選択されたコンパイラにおけるコンパイル条件が選択される。
【０１６３】
図１７は、ステップＳ１５においてコンパイル条件を選択するための、表示部５１の表示例を示している。ユーザーは、必要な最適化条件に対応したボタン１５０，ボタン１５１のいずれか、デバッグ情報の不可条件に対応したボタン１５２，ボタン１５３のいずれか、出力ファイル形式に対応したボタン１５４，ボタン１５５のいずれかを選択した後、ボタン１３５を押下することによりコンパイル条件を選択する。
【０１６４】
次に、ステップＳ１６で、システム設定部５３が、ステップＳ１２〜ステップＳ１５におけるユーザーの選択結果に基づいて、コンパイル情報３２とリンク情報３７を出力する。
【０１６５】
そして、ステップＳ１７で、システム設定部５３が、ステップＳ１４でのユーザーの選択結果に基づいて複合実行形式ファイル情報４１を出力する。
【０１６６】
以上の手順によりシステム設定の処理は終了し、その後、図１および図１０に示すソフトウェア開発システムなどにおける処理が続く。
【０１６７】
上記のコンパイル情報３２はコンパイル処理部３４においてコンパイラ３３に対するコンパイル形態の指定として使われ、上記のリンク情報３７はリンク処理部３９，リンク処理部９４において、リンカ３８に対するリンク形態の指定として使われる。また、複合実行形式ファイル情報４１は、複合実行形式ファイル４３に含めるべき実行形式ファイル４０についての情報として参照される。
【０１６８】
この第３の実施の形態においては、複数のシステム実行形式ファイルからユーザーの希望に応じたモジュールを選択できるため、所望の前記実行形式ファイルでプログラムを構成可能となる。
【０１６９】
［４］  他の実施の形態
なお、本発明の実施の形態は、以上の実施の形態にのみ限定されるものではなく、この他にも種々の変形が考えられる。
【０１７０】
例えば、図１０に示した、本発明に係る第２の実施の形態としてのソフトウェア開発システムにおけるソフトウェア開発手順において、リンク処理部９４は、それぞれ１つまたは複数のオブジェクトファイル３５，ライブラリファイル３６，再配置可能ファイル９０，オブジェクトファイル９３をリンクして、リンク情報からのアドレス情報に基づいてあるアドレスに配置した実行形式ファイルを出力する際に、中間ファイルとして再配置可能ファイルを生成してもよい。
【０１７１】
図１８は、そのような再配置可能ファイル生成手段の一例を示している。
【０１７２】
すなわち、再配置可能ファイル９７は、オブジェクトファイル３５，ライブラリファイル３６，再配置可能ファイル９０，オブジェクトファイル９３から、実行形式ファイル９５を出力するための中間ファイルとして生成されたファイルであり、最終的には削除される。再配置可能ファイル９８の内容は、再配置可能ファイル９７の内容と同じであるが、将来的に再配置可能ファイル９０として再利用されるべく出力され、保存されたものである。
【０１７３】
なお、前述したように、図１１および図１２では、リンク処理部９４が実行形式ファイルを直接に出力するようにされているが、再配置可能ファイル９７および再配置可能ファイル９８が生成されている場合も含まれる。
【０１７４】
また、図１４に示した第３の実施の形態のシステム設定手順において、最適化やデバッグに関するオプションの選択を可能とし、コンパイル情報３２，リンク情報３７に反映されるようにしても良い。
【０１７５】
以上説明したように、本発明に係るソフトウェア開発システムは、組込みシステムのソフトウェア開発システムとして、オペレーティングシステムの機能ごとに分かれたモジュールをメモリ空間上で再配置可能（リロケータブル）な実行形式ファイルもしくはオブジェクトファイルとして提供する手段と、提供されたモジュールからユーザーが必要とするモジュールを選択する手段と、ユーザーにより選択されたモジュールについてリロケータブルな実行形式ファイルからセクション情報を抽出して複合実行形式ファイルを作る手段とを備えるようにしたため、複数の実行形式ファイルを１つの複合実行形式ファイルにまとめることにより、１つのファイルを読み込むだけでプログラムを実行可能にする。一部の実行形式ファイルを実行時に置き換えたい場合には、メモリ空間上に割り当てられた対応するテキストセクションと初期化データセクションを廃棄すればよく、実行時に一部のモジュールの交換が可能である。
【０１７６】
このため、ファイルサイズもしくはメモリサイズを必要最小限しか必要としない。システムモジュールを追加する場合も、ライブラリとして実行形式ファイルにリンクされるのではなく、実行形式ファイルを追加すればよいので、不必要になった際に削除可能である。また、ファイルシステムがなくても複数のモジュールを導入可能であるなどのメリットがある。
【０１７７】
さらに、システムモジュールをシステム実行形式ファイルや再配置可能ファイルを主体として配布することにより、ユーザー側でのコンパイル時間を削減可能である。もしくはライブラリファイルからシステムオブジェクトファイルを提供することによってもユーザー側でのコンパイル時間を削減可能である。
【０１７８】
このように、複数のシステム実行形式ファイルからユーザーの希望に応じたモジュールを選択できるため、所望の前記実行形式ファイルでプログラムを構成することが可能となる。
【０１７９】
【発明の効果】
本発明によれば、一部のモジュールを後から交換できる仕組みを備えたオペレーティングシステムを使用した場合に好適な、組込みシステムのソフトウェア開発システムを提供できる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態であるソフトウェア開発システムの構成例を示すブロック図である。
【図２】上記ソフトウェア開発システムにおけるソフトウェア開発手順の一例を示すブロック図である。
【図３】本発明に係る複合実行形式ファイルの内部構成について説明するための図である。
【図４】複合実行形式ファイルの内部構成情報について説明するための図である。
【図５】上記内部構成情報のモジュール情報について説明するための図である。
【図６】複合実行形式ファイルがメモリ上に展開された状態について説明するための図である。
【図７】複合実行形式ファイルがメモリ上に展開された状態について説明するための図である。
【図８】本発明の第１の実施の形態であるソフトウェア開発システムの複合実行形式ファイル作成部の一構成例を示すブロック図である。
【図９】上記ソフトウェア開発システムの複合実行形式ファイル作成部の別の構成例を示すブロック図である。
【図１０】本発明の第２の実施の形態であるソフトウェア開発システムの構成例を示すブロック図である。
【図１１】上記ソフトウェア開発システムにおけるソフトウェア開発手順の一例を示すブロック図である。
【図１２】上記ソフトウェア開発システムにおけるソフトウェア開発手順の一例を示す、図１１に続くブロック図である。
【図１３】本発明の第３の実施の形態であるソフトウェア開発システムの構成例を示すブロック図である。
【図１４】上記ソフトウェア開発システムにおけるシステム設定の基本的な手順を示すフローチャートである。
【図１５】上記ソフトウェア開発システムの表示部における表示例を示す図である。
【図１６】上記ソフトウェア開発システムの表示部における表示例を示す図である。
【図１７】上記ソフトウェア開発システムの表示部における表示例を示す図である。
【図１８】再配置可能ファイル生成手段の具体例について説明するための図である。
【図１９】一般の組込みＯＳにおけるソフトウェア開発システムの構成を示すブロック図である。
【図２０】一般の組込みＯＳにおけるソフトウェア開発手順を示すブロック図である。
【図２１】従来の実行形式ファイルの内部構成例を示す図である。
【符号の説明】
３０  ヘッダファイル、  ３１  ソースファイル、  ３２  コンパイル情報、３３  コンパイラ、  ３４  コンパイル処理部、  ３５  オブジェクトファイル、  ３６  ライブラリファイル、  ３７  リンク情報、  ３８  リンカ、  ３９  リンク処理部、  ４０  実行形式ファイル、  ４１  複合実行形式ファイル情報、  ４２  複合実行形式ファイル作成部、  ４３  複合実行形式ファイル、７８  初期化プログラム
【図１】
0004003261.tif 000002
【図２】
0004003261.tif 000003
【図３】
0004003261.tif 000004
【図４】
0004003261.tif 000005
【図５】
0004003261.tif 000006
【図６】
0004003261.tif 000007
【図７】
0004003261.tif 000008
【図８】
0004003261.tif 000009
【図９】
0004003261.tif 000010
【図１０】
0004003261.tif 000011
【図１１】
0004003261.tif 000012
【図１２】
0004003261.tif 000013
【図１３】
0004003261.tif 000014
【図１４】
0004003261.tif 000015
【図１５】
0004003261.tif 000016
【図１６】
0004003261.tif 000017
【図１７】
0004003261.tif 000018
【図１８】
0004003261.tif 000019
【図１９】
0004003261.tif 000020
【図２０】
0004003261.tif 000021
【図２１】
0004003261.tif 000022