私は2つの静的ライブラリをマージする大きな静的ライブラリを構築しようとしています。現時点では、私は「AA」と「BA」から、例えば、オブジェクトを抽出し、「AR」コマンドを使用して、再度「AR」を使用してこれらのオブジェクトを再構築するよ:繰り返しオブジェクトファイルを含む静的ライブラリをどのように抽出できますか?
$ ar x a.a
$ ar x b.a
$ ar r merged.a *.o
残念ながら、それが動作しません私の目的のために、aaは同じ名前の中に別のオブジェクトを持っているからです。 'ar'コマンドは繰り返しオブジェクトを抽出し、すでに抽出されたオブジェクトを同じ名前に置き換えます。同じ名前であっても、これらのオブジェクトは異なるシンボルを持つため、置き換えられたファイルとともにいくつかのシンボルが欠落しているため、未定義の参照を取得します。
私は元のオブジェクトにアクセスできず、すでに 'ar xP'と 'ar xv'とたくさんの 'ar stuff'を試しています。誰も私がどのようにこれらのライブラリをマージするのを助けることができますか?
ありがとうございます。
素晴らしい、私は同じ問題を抱えていて、このスクリプトはこの問題を解決しました。 しかし、48:57の代わりに '' '' 'content_descripter [48:58]' 'と書くべきだと思います。ファイルサイズフィールドは、[Wikipedia](https://en.wikipedia.org/wiki/Ar_(Unix))によると、9バイトの代わりに10バイトです。 –
また、BSDの.aファイル形式(Macなど)を扱う場合、ファイル名は[Wikipedia](https://en.wikipedia.org/wiki)で説明されているように、本体部分の一部にすることができます/ Ar_(Unix))。だからあなたはまたそれを取り除くための論理を必要とするだろう。 –