「ild: calling ld to finish link ...」というメッセージは、ild がリンクを完了できないため、リンク要求を ld に依頼して完了させることを意味します。
デフォルトでは、必要に応じて以下のようなメッセージが表示されるように設定されています。これらのメッセージは、-z i_quiet オプションによって非表示にすることができます。
ild: ld を呼び出してリンクを完了させます -- アーカイブ <library name> 中の共有ライブラリを処理できません
このメッセージは、ild が潜在的に要求されている場合 (-g が使用されている場合) は表示されませんが、明らかに -xildon がコマンド行に指定されていると表示されます。また、-z i_verbose オプションを使用すると、どのような場合も必ず表示され、逆に -z i_quiet オプションを使用すると、どのような場合も表示されなくなります。
ild: ld を呼び出してリンクを完了させます -- キーワード <keyword> を処理できません
ild: ldを呼び出してリンクを完了させます -- オプション -d <keyword> を処理できせん
ild: ldを呼び出してリンクを完了させます -- オプション -z <keyword> を処理できせん
ild: ldを呼び出してリンクを完了させます -- 引数 <keyword> を処理できません
「ild:(完全な再リンク中) ...」というメッセージは、何らかの理由で ild がインクリメンタルリンクを実行できず、完全再リンクを行う必要があることを意味します。これはエラーではありません。インクリメンタルリンクよりもリンクに時間がかかることを通知するためのメッセージです。詳細については、「ild の動作」を参照してください。ild メッセージは、ild オプションの -z i_quiet と -z i_verbose で制御できます。メッセージの中には、より説明的な文章を表示する冗長 (verbose) モードに変換できるものもあります。
これらのメッセージはすべて、ild オプションの -z i_quiet を使用して非表示にすることができます。デフォルトのメッセージが冗長モードで表示できる場合は、メッセージの末尾に「...」という省略符号が表示され、さらに詳しい情報が表示できることを示します。補足情報を表示するには、-z i_verbose オプションを使用します。この項のメッセージ例は、-z i_verbose オプションを指定することによって表示されたものです。
完全再リンクメッセージの最も一般的なものは、次のような「internal free space exhausted」メッセージで、内部空領域が使い果たされたことを意味するものです。
上記のコマンドは、1 行目のコンパイルから 2 行目のコンパイルに移行したことにより、実行可能ファイルのサイズがデバッグ情報で肥大したことを示しています。このサイズの肥大により、内部の空領域が不足したため、ild は完全再リンクを実行します。
strip コマンドを実行した場合もエラーが発生します。例 1 に続いて、次のようなコマンドを実行すると、エラーメッセージが表示されます。
# a.out を strip します。 # インクリメンタルリンクの 実行を試みます。 |
$ strip a.out $ cc -xildon -z i_verbose -g test1.c ild: (完全な再リンク中) a.out は最後にインクリ メンタルリンクを実行してから変更されていま す -- strip または mcs を実行したと思われます $ |
古いバージョンの ild で作成された実行可能ファイルで、新しいバージョンの ild を実行すると、次のようなエラーメッセージが表示されます。
# old_executable ファイルが 旧バージョンの ild で作成されたものと 仮定します。 |
$ cc -xildon -z i_verbose foo.o -o old_executable ild: (完全な再リンク中) a.out が最後にリンクされた時点 (206/3145777) 以降に、更新された ild がインストールされ ています |
(2/16) という数値は、内部レポート用としてのみ使用されています。
ild は、インクリメンタルリンクを実行するよりも、完全再リンクを実行する方が速いと判断する場合があります。たとえば、次のような場合です。
この例では、touch コマンドを使用したことによって x0.o 〜 x8.o のファイルが変更されており、それを認識した ild が、これら 9 つのオブジェクトファイルをすべてインクリメントしながら再リンクするよりも、完全再リンクを行った方が速いと判断しています。
前回のリンクが完全再リンクになった場合は、そのリンクと比較して、次に行うリンクも完全再リンクになる可能性があります。
前回のプログラムを再びリンクしようとすると、次のようなメッセージが表示されます。
# ild は前回のエラーを検出 したため、完全再リンクを行います。 |
$ cc -xildon -z i_verbose broken.o ild:(完全な再リンク中) 以前のリンクに 問題があったので、インクリメンタルモードでは 再リンクできません |
この場合は、完全再リンクが行われます。