3.10 リンカによる ARM 標準ライブラリの検索方法

リンカは、コマンドラインで指定された情報を使用するか、または環境変数を調べることによって、 ARM® 標準ライブラリを検索します。

デフォルトでは、リンカは ../lib 内で ARM 標準ライブラリを検索します。この場所は armlink 実行可能ファイルの場所に対して相対的です。--libpath コマンドラインオプション、ARMLIB または ARMCC5LIB 環境変数のいずれかを使用して、別の場所を指定することができます。
一部のライブラリはサブディレクトリに格納されます。コンパイラでは、特定のサブディレクトリのライブラリが必要な場合、サブディレクトリを識別するための特別なシンボルのインポートをリンカに追加します。サブディレクトリの名前は、Lib$$Request$$sub_dir_name 形式のシンボルを使用して、コンパイル済みの各オブジェクト内に配置されます。

--libpath コマンドラインオプションの使用

--libpath コマンドラインオプションは、親ディレクトリのコンマ区切りリストと共に使用します。このリストは、 ARM ライブラリディレクトリ armlib および cpplib のペアレントディレクトリで終わる必要があります。
ライブラリパスの末尾に以下のパスの区切り文字を含めた場合、リンカでは、シンボル Lib$$Request$$sub_dir_name で指定されたサブディレクトリを検索します
  • \(Windows の場合)。
  • /(Red Hat Linux の場合)。
例えば、--libpath=mylibs\ とシンボル Lib$$Request$$armlib を使用した場合、リンカは以下のディレクトリを検索します。
mylibs
mylibs\armlib

リンカコマンドラインオプション --libpath を使用した場合、ARMCC5LIB 変数で指定されたパスは検索されません。
複数のライブラリで同じシンボルが定義されている場合、検索は先頭から順番に実行されるため、リスト内で最初に出てくるライブラリが armlink によって選択されます。

ARMCC5LIB 環境変数または ARMLIB 環境変数

ARMLIB かまたは ARMCC5LIB 環境変数のいずれかを使用して、ライブラリのパスを指定することができます。
ライブラリパスの末尾に以下のパスの区切り文字を含めた場合、リンカでは、シンボル ARMCC5LIB に指定されたパスの末尾に以下のパスの区切り文字を含めた場合、リンカでは、シンボル Lib$$Request$$sub_dir_name で指定されたサブディレクトリを検索します。
  • \(Windows の場合)。
  • /(Red Hat Linux の場合)。
例えば、ARMCC5LIB install_directory\lib に設定されている場合、リンカでは以下のディレクトリを検索します。
lib
lib\armlib
lib\cpplib

ライブラリ検索順序

リンカはライブラリを次に示す順序で検索します。
  1. 現在のパスの相対パス
  2. コマンドラインオプション --libpath で指定された場所。
  3. ARMCC5LIB で指定された場所。
  4. ARMLIB で指定された場所
  5. ../lib で指定された場所。

リンカによる ARM ライブラリのバリアントの選択方法

ARM コンパイラ ツールチェインには、さまざまなビルドオプションを使用してビルドされた、各ライブラリのバリアントがいくつか含まれています。例えば、アーキテクチャバージョン、エンディアン、命令セットがあります。 ARM ライブラリのバリアントは、そのライブラリの名前で符号化されます。リンカは、ライブラリの検索時に識別された各ディレクトリから、最も適切なバリアントを選択する必要があります。
リンカは、各入力オブジェクトの属性を蓄積し、それらの属性に最も適したライブラリのバリアントを選択します。選択された複数のライブラリが同様に適している場合には、最初に選択されたライブラリが採用され、残りのライブラリは採用されません。
--no_scanlib オプションを選択すると、リンカは ARM 標準ライブラリのディレクトリの検索を行いません。
関連する概念
3.9 リンカによるライブラリの検索、選択、およびスキャンの実行方法
関連する参考文書
12.83 --libpath=pathlist
関連情報
C および C++ ライブラリの命名規則
C および C++ ライブラリ
ツールチェーンの環境変数
非機密扱いPDF file icon PDF 版ARM DUI0474LJ
Copyright © 2010-2015 ARM.All rights reserved.