3

AIXでは、次を実行します。

ar -X32 -t libdb2.a

出力をチェックして、アーカイブに32ビットオブジェクトがあるかどうかを判断します。同様に、64ビットオブジェクトをチェックするための-X64を使用します。ただし、別のプラットフォームを使用していて、アーカイブをチェックしてアーカイブが何であるかを確認する必要がある場合はどうでしょうか。通常、チェックする必要があるときはLinuxを使用していますが、SolarisまたはHP-UXを使用することも簡単にできます。

以前はshr.oとshr_64.oをチェックしていましたが、これはコンパイルされているものですが、アーカイブにある実際のメッセージに表示され始めているため、これらの信頼性は私がいるところまで低下しています。誤検知を取得します。

誰かがポインタを持っているなら、できれば私がperlでできることなら、それは素晴らしいことです。

4

3 に答える 3

1

簡単な方法はないと思います。次のように、32ビットと64ビットの2つのAIXアーカイブを作成する場合。

$ cat a.c
int foo (void) { return 42; }
$ xlc -q32 a.c -c -o a32.o
$ xlc -q64 a.c -c -o a64.o
$ ar -X32 cr a32.a a32.o
$ ar -X64 cr a64.a a64.o

Linuxで読み取り可能な形式ではないアーカイブになってしまいますar

$ file a32.a a64.a 
a32.a: archive (big format)
a64.a: archive (big format)
$ ar t a32.a
ar: a32.a: File format not recognized
$ ar t a64.a
ar: a64.a: File format not recognized

stringsアーカイブに明らかなものがあるかどうかを確認するためにを使用してみましたが、何も見つかりませんでした。残りのオプションは、AIXをターゲットとするbinutilsパッケージをビルドすることです(binutilsをダウンロードし、オプションで構成し--target=powerpc-ibm-aix5.3、実行して、ボイラー:そのビルドツリーのどこかにmake呼び出されるツールがあります)。powerpc-ibm-aix5.3-ar

于 2009-11-11T17:17:53.420 に答える
1

.aアーカイブから.oファイルの1つを抽出し、そのファイルに対してfileコマンドを実行することをお勧めします。例:

$ file fortune/fortune.o
fortune/fortune.o: ELF 32-bit MSB relocatable, SPARC, version 1 (SYSV), not stripped

fileすべてのシステムで標準ではありませんが、簡単にコンパイルできます。あるいは、と同じことをする2つのperlモジュールfileがあります。

arp問題のファイルを出力するコマンドを提供します。例えば:

$ ar p libcurl.a base64.o > /tmp/base64.o
$ file /tmp/base64.o  
base64.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not stripped
于 2009-11-10T04:38:41.430 に答える
0

だから...私は1年遅れていますが、まったく同じ問題がありました。これが私がそれを解決した方法です、私はそれが誰かを助けることを願っています:

$ ar t mylib.a
myobj1.o
myobj2.o
myobj3.o

$ mkdir /tmp/mylib
$ cp mylib.a /tmp/mylib
$ cd /tmp/mylib
$ ls
mylib.a

$ ar x mylib.a
$ ls
mylib.a
myobj1.o
myobj2.o
myobj3.o

$ file *

考えられる結果:

mylib.a: current ar archive
myobj1.o: ELF 64-bit (...)
myobj2.o: ELF 64-bit (...)
myobj3.o: ELF 64-bit (...)

また

mylib.a: current ar archive
myobj1.o: ELF 32-bit (...)
myobj2.o: ELF 32-bit (...)
myobj3.o: ELF 32-bit (...)

説明:アーカイブ・ライブラリー・ファイルは単なる「.o」ファイルのコレクションです。arの「t」引数を使用するとアーカイブの内容がリストされ、arの「x」引数を使用するとそれらが抽出されます。詳細な手順については、manarと入力してください。

于 2010-11-25T00:32:38.327 に答える