プログラムがライブラリとリンクして実行される情報処理装置であって、プログラムの実行に際し、ライブラリの実施状況に応じて前記プログラムのヘッダ情報を書き換える更新手段と、前記更新手段で更新された前記ヘッダ情報に基づいてライブラリへのリンク処理を遅延させる遅延手段とを備えることを特徴とする情報処理装置。前記更新手段は、リンク処理を遅延させるライブラリを決めるための識別子を前記ヘッダ情報に書き込むことを特徴とする請求項1記載の情報処理装置。前記遅延手段は、前記プログラムがライブラリの関数を呼び出すにあたり、前記更新手段で前記ヘッダ情報に書き込まれた識別子を認識して前記ライブラリへのリンク処理を遅延させることを特徴とする請求項2記載の情報処理装置。プログラムがライブラリとリンクして実行される情報処理装置における情報処理方法であって、プログラムの実行に際し、ライブラリの実施状況に応じて前記プログラムのヘッダ情報を書き換える更新工程と、前記更新工程で更新された前記ヘッダ情報に基づいてライブラリへのリンク処理を遅延させる遅延工程とを備えることを特徴とする情報処理方法。請求項4記載の情報処理方法の各工程をコンピュータに実行させるプログラム。ここで、特許文献1の技術では、前記遅延を改善するため、ライブラリのアドレスを再配置した後の状態をテーブルとして残しておき、プログラムの実行時にはテーブルを用いてプログラムの実行時における遅延の削減を実現している。しかしながら、特許文献1の技術では、プログラム及び複数のライブラリのうちどれかの内部構成を大きく変更する必要が生じた場合、これまでのテーブルを使用することができない。そのため、ライブラリのみの更新であった場合でも、プログラム、ライブラリ、及びテーブル全ての更新が必要となる。本発明はこのような問題点に鑑みなされたもので、プログラムの実行にあたり、ライブラリのリンク処理をより適切に行うことを目的とする。そこで、本発明に係る情報処理装置は、プログラムがライブラリとリンクして実行される情報処理装置であって、プログラムの実行に際し、ライブラリの実施状況に応じて前記プログラムのヘッダ情報を書き換える更新手段と、前記更新手段で更新された前記ヘッダ情報に基づいてライブラリへのリンク処理を遅延させる遅延手段とを備えることを特徴とする。また、本発明は、記録媒体などとしてもよい。本発明によれば、プログラムの実行にあたり、ライブラリのリンク処理をより適切に行うことができる。以下、本発明の実施形態について図面に基づいて説明する。なお、実施形態は、本発明を限定するものではなく、また、実施形態で説明されている全ての構成が本発明の課題を解決するための手段に必須であるとは限らない。<第1の実施形態>本実施形態を図1から図10を用いて説明する。本実施形態は、共有ライブラリを動的にリンク動的リンクして実行する情報処理装置コンピュータ等に関するものである。図1は、本実施形態に係るプログラムの実行の対象となる情報処理装置100のハードウェアの構成の一例を示す図である。CPU101は、情報処理装置100全体を制御するCentralProcessingUnitCPUである。情報処理装置100では、CPU101の制御のもとオペレーティングシステムOS、アプリケーションなどが動作している。主記憶装置102は、プログラムやデータを一時記憶するRandomAccessMemoryRAMである。二次記憶装置103は、ハードディスクドライブHDDやフラッシュメモリのようなデータやプログラムを記録しておくことができる不揮発な記録媒体である。デバイス104は、ネットワーク機器やシリアル通信機器などの情報処理装置100に接続された周辺機器である。バス105は、各ユニットを通信可能に接続するシステムバスである。図2、図3は、共有ライブラリを動的リンクしてプログラムを使用する際の仕組みの一例を示す図である。図2、図3を用いて動的リンクの概要を説明する。なお、CPU101が、二次記憶装置103に格納されたプログラムの手順に従って処理を行うことによって、後述のダイナミックリンカローダ201の機能、後述のフローチャートの処理が実現される。ここでは、あるプログラムA211がライブラリA221とライブラリB223というライブラリを動的リンクして実行されるものとする。また、プログラムA211は、ライブラリA221の関数A220とライブラリB223の関数B222とを呼び出す構成である。上記の場合、プログラムA211を実行するにあたり、ダイナミックリンカローダ201は、プログラムヘッダ情報部310を参照し、プログラムA211にはライブラリA230及びライブラリB231が必要であることを検出する。そして、ダイナミックリンカローダ201は、二次記憶装置103よりライブラリA230及びライブラリB231をロードする。なお、ロードされたライブラリA230及びライブラリB231は、主記憶装置102にライブラリA221及びライブラリB223として展開される。また、ロードされたライブラリA221及びライブラリB223は、この時点では、まだプログラムA211が呼び出すことができる状態ではない。そこで、ダイナミックリンカローダ201は、ライブラリA221及びライブラリB223のアドレス情報に関する再配置を行い、プログラムA211が呼び出すことが可能な状態にする。ここで、呼び出し可能となった状態を仮想記憶301に展開されたプログラムA302とする。再配置されたライブラリの情報は、ライブラリロード部304のようになるものとする。以上が、プログラムA211で用いられる共有ライブラリを動的リンクする際の処理の一例である。一般的に、ライブラリのアドレス情報の再配置に関する処理には時間がかかる。特に、プログラムが共有ライブラリを多く必要とすればするほど、その再配置に関する処理時間は増大し、プログラムの実行までの遅延における主要因となる。そこで、本実施形態では、後述のコンパイラリンカ400等でプログラムが更新され、更新されたプログラム実行オブジェクトがダイナミックリンカローダ201で用いられる構成を採用し、プログラムの実行までの遅延を低減する方法について説明する。より具体的には、本実施形態では、図4に示すプログラムB410が共有ライブラリAの関数A、共有ライブラリBの関数B、共有ライブラリCの関数Cをそれぞれ呼び出して実行するプログラムである場合について説明する。さらに、共有ライブラリCの関数Cは、エラー処理のような、プログラムB410を実行するために必ずしも急を要するものではないことが自明であることがわかっている場合について説明する。なお、CPU101が、二次記憶装置103に格納されたプログラムの手順に従って処理を行うことによって、後述のコンパイラリンカ400の機能、後述のフローチャートに係る処理が実現される。プログラムB410は、情報処理装置100上で実行される際、共有ライブラリA、共有ライブラリB、共有ライブラリCを必要としている。故に、コンパイラリンカ400によりプログラムB410が実行オブジェクトとして生成されるとき、共有ライブラリをリンクする処理リンク処理が予め必要であるフラグがプログラムヘッダ情報部411に記述される。本実施形態では、このフラグをNEEDEDと表すことにする。ここで、一般的には、NEEDEDフラグは、プログラムB410が実施される直前に用いる全てのライブラリのリンク処理が行われることを意味する。ただし、本実施形態では、NEEDEDフラグは、プログラムB410を実施するにあたり必須のライブラリであることを表すフラグであるとする。これに該当するものがライブラリA、及びライブラリBであるとする。他方、プログラムB410を実行するにあたり、必ずしも必須ではないライブラリに対しては相当のフラグ本実施形態ではこのフラグをMAYNEEDEDと表すことにする。が付与されるものとする。これに該当するものがライブラリCであるとする。このようなプログラムB410とライブラリとの情報を図5に示すリンクリスト500に予め記述し、用意しておく。なお、リンクリスト500は、二次記憶装置103等の記憶装置に記憶されている。また、プログラムB410は、図6に示すように、リンクリスト500に記述された情報を元に、ライブラリ関数処理部更新部601によってライブラリ関数処理部612が書き換えられる。また、プログラムヘッダ情報更新部600によって実施状況に応じてプログラムヘッダ情報部611のように書き換えられる。最終的に、ライブラリ関数処理部612及びプログラムヘッダ情報部611を書き換えられるプログラムB410は、プログラムB610となり、情報処理装置100上で実行される。なお、CPU101が、二次記憶装置103に格納されたプログラムの手順に従って処理を行うことによって、プログラムヘッダ情報更新部600の機能、後述のフローチャートに係る処理が実現される。また、ライブラリ関数処理部更新部601についても同様である。次に、プログラムB610が情報処理装置100で実行されるときの処理について図7、図8を用いて説明する。まず、ダイナミックリンカローダ201は、プログラムB610の開始を検出するとS801、スタックなどライブラリ以外に関するプログラムB610の開始準備を行うS802。次に、共有ライブラリのアドレス解決や再配置などのリンク処理が行われるS803。より具体的には、S803では、ダイナミックリンカローダ201は、プログラムヘッダ情報部611に記述されたライブラリ情報のフラグうち、ライブラリAやライブラリBのようにNEEDEDと記述されたもののみリンク処理を行うS804、S805。一方、ライブラリロード予約部710は、ライブラリCのようにフラグにMAYNEEDEDと記述されたものについては、S806にてリンク処理は行わず、ライブラリがロードされる領域であるライブラリCロード予約部704の予約のみを行うS806。なお、CPU101が、二次記憶装置103に格納されたプログラムの手順に従って処理を行うことによって、ライブラリロード予約部710の機能、S806等に係る処理が実現される。次に、プログラムB610から各ライブラリの関数ライブラリ関数が呼ばれたときの処理について、図9、図10を用いて説明する。まず、ダイナミックリンカローダ201は、ライブラリ関数が呼び出されたことを検出するS901。ここで、通常NEEDEDフラグのあるライブラリのライブラリ関数処理部612の詳細は、図10のようになっている。ライブラリ関数処理部612は、例えばGOTGlobalOffsetTableのような場所を指す。ライブラリ関数処理部612に従って、即ち関数Aの場合では、NEEDEDフラグが付与されたライブラリの関数であるのでS902でYESであるので、S904にて関数シンボル解決処理が行われる。より具体的には、ポインタ1002に関数シンボル解決処理へのポインタが格納されており、関数シンボル解決処理が実行される。関数シンボル解決処理が終了すると、ライブラリ関数へのポインタ1003に実際のライブラリ関数へのポインタが格納される。以降、同様のライブラリ関数が呼び出された場合、ライブラリ関数へのポインタ識別子1003が呼び出されるようになる。一方、MAYNEEDEDと記述された共有ライブラリに関しては、ライブラリ関数が呼び出されたことが検出されるとS901、S902でNEEDEDのライブラリではないと判定され、S903のライブラリのロード再配置処理が実行される。このロード再配置処理は、NEEDEDフラグが付与された共有ライブラリがプログラムの開始時に実行されるべきライブラリのロード再配置処理と同様である。なお、共有ライブラリがロードされるべき領域は、プログラムの実行時に予め予約された領域であり、例えば、ライブラリCではライブラリCロード予約部704となる。S903のライブラリのロード再配置処理が完了した後は、MAYNEEDEDフラグが付与された共有ライブラリもNEEDEDフラグが付与された共有ライブラリと同等の処理が行われる。このため、S904の関数シンボル解決処理が実行されたのち、S905にて実際に共有ライブラリの関数呼び出しが行われる。このように、即時に必要がないライブラリについては、プログラムの実行時においてリンク処理などの当該ライブラリの使用準備が行われない。そして、当該ライブラリが必要となったときに初めて当該ライブラリを使用可能にする使用準備が行われる。即ち、上述した構成によれば、即時に必要がないライブラリのリンク処理が遅延されるので、プログラムの実行開始までの処理時間を削減することができる。また、上述した構成によれば、一部のライブラリが更新などにより変更されるような場合があっても、他のプログラム、ライブラリには影響を及ぼすことのなく実行可能である。<第2の実施形態>本実施形態について図11~図16を用いて説明する。なお、本実施形態では、第1の実施形態の構成と同一の構成については同一の符号を用いて、その説明を適宜省略する。本実施形態では、第1の実施形態とは異なり、図11に示すプログラムC1100が、どのような共有ライブラリをリンクし、ライブラリ関数をどのような頻度で呼び出しているかわからない。そのため、情報処理装置100は、プログラムC1100を一度または複数回実行し、実行中の共有ライブラリ関数の呼び出し履歴を記録する。この呼び出し履歴を元に、次回のプログラムの作成時にライブラリに付与すべきフラグがNEEDEDであるのか、又はMAYNEEDEDにすべきであるかどうかが決定される。例えば、プログラムC1100では、共有ライブラリAの関数Aは、頻繁に呼び出されるが、共有ライブラリBの関数B及び共有ライブラリCの関数Cについては条件によって呼び出されるかどうか予測ができないとする。まず、プログラムC1100は、コンパイラリンカ400によって実行可能なオブジェクトとして生成される。この時点では、プログラムC1100のプログラムヘッダ情報部1101に記述される共有ライブラリに付与するフラグは全てNEEDEDとなる。次に、図12のようにライブラリ関数処理部更新部601がプログラムC1100のライブラリ関数処理部1201を変更する。変更する内容の一例を図13に示す。まず、それぞれの関数が呼び出されたときには、関数の呼び出し履歴を収集できるような関数呼び出し履歴収集処理へのポインタ1302、1306を用意しておく。また、関数呼び出し履歴収集処理の結果呼び出し履歴は、例えば図14のようなリスト1400になっており、関数を呼び出したプログラム名1401が記録される。以下同様に、使用されたライブラリ名1402、呼び出された関数名1403、呼び出し回数1404、呼び出し時間1405が呼び出し履歴に記録される。呼び出し時間1405については、該当関数が最初に呼び出されたときの時間が記録され、以降複数回呼び出されたときには記録されないものとする。呼び出し履歴に記録された後は、通常通り関数シンボル解決処理へのポインタ1303、1307により関数シンボル解決処理が行われ、最終的にライブラリ関数が呼び出し可能となる。なお、関数呼び出し履歴収集処理へのポインタ1302及び1306については、関数の呼び出し履歴を収集するか否かの切り替えが可能である。関数の呼び出し履歴の収集を行わない場合、通常通り関数シンボル解決処理から実行されるようになる。詳細は以後説明する。次に、プログラムC1100が情報処理装置100上で共有ライブラリをリンクしながら実行される処理について図15を用いて説明する。なお、プログラムの開始時に行われる共有ライブラリのロード処理、再配置処理などはこれまでと同様である。まず、S1501では、ダイナミックリンカローダ201は、共有ライブラリの関数が呼び出されたことを検出する。S1502では、ダイナミックリンカローダ201は、関数の呼び出し履歴を記録するかどうかの判定を行う。このとき、ダイナミックリンカローダ201は、呼び出し履歴を記録しないと判断した場合、通常通りS1504にて関数のシンボル解決処理を行い、S1505にて関数の呼び出しを行う。一方、ダイナミックリンカローダ201は、S1502にて関数の呼び出し履歴を記録すると判断した場合、S1503にて関数呼び出し履歴収集処理を実行し、図14の呼び出し履歴に共有ライブラリ関数を呼び出した情報を記録する。関数呼び出し履歴収集処理が完了すると、ダイナミックリンカローダ201は、通常通り、S1504の関数シンボル解決処理を実行し、最終的にS1505において共有ライブラリの関数の呼び出しを行う。次に、遅延ライブラリ決定部は、プログラムC1100を実行した後に得られた呼び出し履歴リスト1400を元に、ライブラリのロード再配置処理を遅延することが可能な共有ライブラリを決定する。遅延ライブラリ決定部は、ライブラリのロード再配置処理が遅延可能な共有ライブラリを認識した場合は、MAYNEEDEDフラグを付与するために図5と同様にリンクリストを作成し、遅延させたい共有ライブラリについてMAYNEEDEDと記述する。なお、遅延ライブラリ決定部については、図示を省略する。また、CPU101が、二次記憶装置103に格納されたプログラムの手順に従って処理を行うことによって、遅延ライブラリ決定部の機能が実現される。ここで、呼び出し履歴リスト1400の情報を元にどの共有ライブラリのロード再配置処理を遅延させるかを決定するかは様々な方法があるが、本実施形態では、図16のような2通りの方法により、リンクリスト1、及びリンクリスト2が作成される。リンクリスト11600は、遅延ライブラリ決定部がリスト1400から共有ライブラリ関数の呼び出し回数1404を抽出し、呼び出し回数の少ないものを遅延させるべきライブラリであると決定したリストである。例えば、遅延ライブラリ決定部は、呼び出し回数1404から、ライブラリBの関数Bの呼び出し回数が規定の回数よりも少ない1回であるので、遅延対象のライブラリであると判断し、リストにMAYNEEDEDと記述する。他方、リンクリスト21601は、遅延ライブラリ決定部がリスト1400から共有ライブラリ関数の呼び出し時間1405を抽出し、呼び出し時間が遅いものを遅延させるべきライブラリであると決定したリストである。ここで、呼び出し時間1405には、関数が最初に呼び出された時間が記録されている。即ち、呼び出し時間1405が遅い関数は、該当ライブラリのロード再配置処理の緊急性を要しない関数であると考えることができる。例えば、リスト1400では、共有ライブラリCの関数Cは、10回呼び出されてはいるが、その呼び出し時間1405は規定の時間よりも遅かったとする。そのため、共有ライブラリCは、プログラムの開始時にロード再配置処理を行わなければならないような緊急性を要するライブラリではないので、遅延ライブラリ決定部は、リンクリスト21601においてライブラリCにMAYNEEDEDフラグを付ける。上述した構成によれば、プログラムCがどのように関数を呼び出すかわからない場合でも、実行結果の履歴を取得し、その履歴からライブラリの処理を遅延すべき共有ライブラリを選定することが可能となる。なお、作成されたリンクリスト11600及びリンクリスト21601の形式は、第1の実施形態で用いた図5のリンクリスト500と同様である。故に、リンクリスト11600又はリンクリスト21601を用いてプログラムCを実行する方法については、第1の実施形態のリンクリスト500を用いた場合と同様である。<その他の実施形態>本実施形態は、コンピュータ内のプログラムの実行によっても実現できることは当然である。また、本実施形態は、フローチャートに係る処理の一部、又は全部を専用のハードウェアを用いて構成してもよい。また、本実施形態では、上述の処理の主体を適宜変更してもよい。また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェアプログラムを、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ又はCPUやMPU等がプログラムを読み出して実行する処理である。上述した実施形態の構成によれば、プログラムの実行にあたり、ライブラリのリンク処理をより適切に行うことができる。以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形変更が可能である。