21

I did read the man file but it does not help. rcs seems to be the most popular option to pass to ar, but the meaning isn't so clear to me.

So c means to create a new archive, but then why use r? which seems to stand for "replace"? What will the s option do to the output?

4

3 に答える 3

24

マニュアルページ(ar 用) を読むことは良い出発点です:

c

アーカイブを作成します。更新を要求すると、指定されたアーカイブが存在しない場合は常に作成されます。ただし、この修飾子を使用して作成することを事前に指定しない限り、警告が発行されます。

r

ファイルmember ... をアーカイブに挿入します (置換あり)。この操作は、名前が追加されるものと一致する場合、既存のメンバーが削除されるという点で q とは異なります。

s

アーカイブに他の変更が加えられていない場合でも、オブジェクト ファイル インデックスをアーカイブに書き込むか、既存のインデックスを更新します。この修飾子フラグは、任意の操作で使用することも、単独で使用することもできます。ar sアーカイブに対して" " を実行することは、それに対してranlibを実行することと同じです。

POSIXと比較すると、1 つの違いに気付くかもしれません: GNU ar は、"-" 接頭辞オプション自体をオプションにします。

アーカイブには、オブジェクト ファイル以外のアイテムを含めることができます (これはあまり行われませんが)。ranlibオブジェクト ファイルを含むアーカイブは、リンカーで使用できるようにするために、追加のメンテナンス (たとえば、 によって実行) が必要です。

Rationale in POSIX ar によると、この-sオプションは BSD に由来します (System Vこれを自動的に行いました)。ただし、単独で実行ranlibすることは一般的な方法-sです (めったに使用されません)。興味深いことに、POSIX には がなくranlib、最終的には、さまざまなプラットフォームで実行するために作成された多数の makefile で、この-sオプションが置き換えられます。ranlib

于 2015-04-18T11:38:09.943 に答える