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

デフォルトでは、リンカは ARM 標準ライブラリを ../lib 内で検索します。この場所は armlink 実行可能ファイルの場所に対して相対的です。 また、--libpath コマンドラインオプションか、あるいは ARMLIB 環境変数または ARMCCnLIB 環境変数のいずれかを使用して、リンカによる ARM 標準ライブラリの検索方法を制御することもできます。

一部のライブラリはサブディレクトリに格納されます。 コンパイラでは、特定のサブディレクトリのライブラリが必要な場合、サブディレクトリを識別するための特別なシンボルのインポートをリンカに追加します。 サブディレクトリの名前は、Lib$$Request$$sub_dir_name 形式のシンボルを使用して、コンパイル済みの各オブジェクト内に配置されます。

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

--libpath コマンドラインオプションは、親ディレクトリのコンマ区切りリストと共に使用します。 このリストは、ARM のライブラリディレクトリ armlib および cpplib の親ディレクトリで終わる必要があります。

ライブラリパスの末尾に以下のパスの区切り文字を含めた場合、リンカでは、シンボル Lib$$Request$$sub_dir_name で指定されたサブディレクトリを検索します。

  • \(Windows の場合)

  • /(Red Hat Linux の場合)

例えば、--libpath=mylibs\ とシンボル Lib$$Request$$armlib を使用した場合、リンカでは以下のディレクトリを検索します。

mylibs
mylibs\armlib

Note

リンカコマンドラインオプション --libpath を使用した場合、ARMCCnLIB 変数で指定されたパスは検索されません。

複数のライブラリで同じシンボルが定義されている場合、検索は先頭から順番に実行されるため、リスト内で最初に出てくるライブラリがリンカよって選択されます。

Show/hideARMCCnLIB または ARMLIB 環境変数の使用

ARMLIB かまたは ARMCCnLIB 環境変数のいずれかを使用して、ライブラリのパスを指定することができます。

ARMCCnLIB に指定されたパスの末尾に以下のパスの区切り文字を含めた場合、リンカでは、シンボル Lib$$Request$$sub_dir_name で指定されたサブディレクトリを検索します。

  • \(Windows の場合)

  • /(Red Hat Linux の場合)

例えば、ARMCC5LIBinstall_directory\lib\ に設定されている場合、リンカでは以下のディレクトリを検索します。

lib
lib\armlib
lib\cpplib

Show/hideライブラリ検索順序

リンカはライブラリを次に示す順序で検索します。

  1. 現在のパスの相対パス

  2. コマンドラインオプション --libpath で指定された場所

  3. ARMCCnLIB で指定された場所

  4. ARMLIB で指定された場所

  5. ../lib で指定された場所

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

ARM コンパイラツールチェーンには、さまざまなビルドオプションを使用してビルドされた、各ライブラリのバリアントがいくつか含まれています。 例えば、アーキテクチャバージョン、エンディアン、命令セットがあります。 ARM ライブラリのバリアントは、そのライブラリの名前で符号化されます。 リンカは、ライブラリの検索時に識別された各ディレクトリから、最も適切なバリアントを選択する必要があります。

リンカは、各入力オブジェクトの属性を蓄積し、それらの属性に最も適したライブラリのバリアントを選択します。 選択された複数のライブラリが同様に適している場合には、最初に選択されたライブラリが採用され、残りのライブラリは採用されません。

Show/hide関連項目

概念
参照

『リンカリファレンス』

ARM® C および C++ ライブラリと浮動小数点サポートの使用』

ARM® C ライブラリ、C++ ライブラリ、および浮動小数点サポートリファレンス』

『ARM コンパイラツールチェーンの概要』

Copyright © 2010-2012 ARM. All rights reserved.ARM DUI 0474GJ
Non-ConfidentialID051612