2011-12-29 10 views
4

複数の静的ライブラリまたはオブジェクトファイルにリンクする場合、順序は重要です(依存ライブラリは依存関係の前にリストされている必要があります)。 arでライブラリファイルを作成するときに、この同じルールが適用され、ライブラリ内での順序が重要であるかどうか、または同じ.aファイル内での順序が違いがないかどうかを知りたいと思います。
は、私は複雑な依存関係グラフで200個の以上のオブジェクトファイルを梱包し、静的ライブラリ内のオブジェクトファイルの順序

ar rcs mylib.a objs/*.o 

はかなり正しい順序でそれらをリストアップし、その後簡単ですやっています。

私はgccを使用していますが、それは違いがあります。

答えて

6

ライブラリ内での順序は、長時間前にを使用しました。

UNIXシステムでは、15〜20年を超えても問題はなくなりました。 man ranlibから:

An archive with such an index speeds up linking to the library 
    and allows routines in the library to call each other without 
    regard to their placement in the archive. 

ほとんど非古代のUNIXシステムアーカイブライブラリを構築しながら、自動的に(インデックスの上に含まれている)__.SYMDEFを生成、またはリンク時にメモリ内にそれを構築するのどちらか。

+0

* "長い時間前にライブラリの中で使用された順序は...." - これはC++の静的オブジェクトの初期化のために必ずしも真実ではありません。 – jww

関連する問題