2.2.3. 入力ファイルリストの指定

すべての入力ファイルの内容は一意である必要があります。 シンボルが複数定義されていると、リンカによってエラーメッセージが生成されます。

リンカに渡す入力ファイルを指定するには、以下のオプションを使用します。

input-file-list

オブジェクト、ライブラリ、またはシンボル定義(symdefs)ファイルをスペースで区切って指定します。 リンカでは、入力ファイルリストが順にソートされます。 リンカが入力ファイルの問題を解決できない場合は、診断メッセージが生成されます。

このリストに symdefs ファイルを含めることで、前に生成されたイメージファイルのグローバルシンボル値を指定できます。 詳細については、別のイメージに含まれているシンボルへのアクセスを参照して下さい。

入力ファイルリスト内のライブラリは、以下の方法で使用できます。

  • 非 weak 型の未解決参照を解決するメンバがある場合に追加する、そのメンバの抽出に使用するライブラリをライブラリリストに指定します。 例えば、入力ファイルリストに mystring.lib と指定します。

    Note

    このリストのライブラリのメンバは、非 weak 型の未解決参照を解決する場合にのみ、イメージに追加されます。

  • ライブラリから抽出し、個別のオブジェクトとしてイメージに追加する特定のメンバを指定します。 例えば、入力ファイルリストに mystring.lib(strcmp.o) と指定します。

リンカは、イメージに最適な標準関数を選択するために、適した C ライブラリおよび C++ ライブラリを自動的に検索します。 --no_scanlib を使用して、標準ライブラリを自動的に検索しないようにすることができます。

リンカでは、入力ファイルリストが以下の順序で処理されます。

  1. オブジェクトを無条件にイメージに追加します。

  2. パターンを使用してライブラリから選択したメンバを、オブジェクトとして無条件にイメージに追加します。 例えば、以下のコマンドでは、myliba*.o という名前のすべてのオブジェクトと stdio.oが無条件に追加されます。

    armlink main.o mylib(stdio.o) mylib(a*.o)
    

    UNIX システムでは、以下のようにかっこをエスケープする必要があります。

    armlink main.o mylib\(stdio.o\)
    
  3. 残りの参照の解決のために後で使用する標準 C または C++ ライブラリをリストに追加します。

詳細については、ライブラリの検索、選択、スキャンを参照して下さい。

--libpath pathlist

ARM の標準 C および C++ ライブラリの検索に使用されるパスのリストを指定します。

ARM のライブラリを含む親ディレクトリの標準設定のパスは、RVCT31LIB 環境変数で指定されます。 ここで指定したすべてのパスは、RVCT31LIB で指定されたパスをオーバーライドします。

pathlist には、必要な ARM ライブラリの検索のみに使用するパスをコンマで区切って指定します。 複数のパス名を指定するときは、コンマとパス名の間にスペースをいれないで下さい(例: path1,path2,path3,...,pathn)。

このリストは、ARM のライブラリディレクトリ armlib および cpplib の親ディレクトリで終わる必要があります。

Note

このオプションは、ユーザライブラリの検索には影響しません。 ユーザライブラリの検索には --userlibpath を使用して下さい。

ライブラリのインクルードに関する詳細については、ライブラリの検索、選択、スキャンを参照して下さい。

--library_type=lib

リンク時に使用する関連ライブラリの選択を有効にします。

lib 次のいずれかを指定できます。

standardlib

リンク時にフル RVCT ランタイムライブラリを選択するように指定します。 これがデフォルトです。

microlib

リンク時に C マイクロライブラリ(microlib)を選択するように指定します。

Note

このオプションは、ライブラリを使用する際に、より特化した最適化を必要とするときに、コンパイラ、アセンブラ、またはリンカで使用できます。

このオプションでリンカを使用すると、他のすべての--library_type オプションがオーバーライドされます。

詳細については、以下を参照して下さい。

--[no_]reduce_paths

ファイルパスの冗長なパス名情報の除外を有効にするかまたは無効にします。 このオプションは Windows システムでのみ使用できます。

Windows システムには、ファイルパスが 260 文字までという制限があります。 絶対パス名が 260 文字を超える相対パス名が存在する場合、--reduce_paths オプションを使用して、ディレクトリを .. の対応するインスタンスとマッチアップし、ディレクトリ/.. シーケンスをペアで削除することにより、絶対パス名の長さを短縮できます。

Note

--reduce_paths オプションを使用してパスの長さを短縮するのではなく、長いファイルパスや深いネスト構造のファイルパスを使用しないようにすることをお勧めします。

詳細については『コンパイラリファレンスガイド』--[no_]reduce_paths (ページ 2-90)を参照して下さい。

--[no_]scanlib

デフォルトのライブラリ(標準 ARM C および C++ ライブラリ)のスキャンを有効または無効にして、参照を解決します。--scanlib がデフォルトです。

--userlibpath pathlist

ユーザライブラリの検索に使用するパスのリストを指定します。

pathlist には、必要なライブラリの検索のみに使用するパスをコンマで区切って指定します。 複数のパス名を指定するときは、コンマとパス名の間にスペースをいれないで下さい(例: path1,path2,path3,...,pathn)。

ユーザライブラリのインクルードに関する詳細については、ライブラリの検索、選択、スキャンを参照して下さい。

Copyright © 2002-2007 ARM Limited. All rights reserved.ARM DUI 0206HJ
Non-Confidential