cMake を使用して ARM7 用の静的ライブラリをいくつか構築しました。通常、.a ファイルに対して次のコマンドを使用すると、アーキテクチャが表示されます。
フェ
mac:libs User$ file ./libcurl.a
./libcurl.a: Mach-O universal binary with 3 architectures
./libcurl.a (for architecture armv6): current ar archive random library
./libcurl.a (for architecture armv7): current ar archive random library
./libcurl.a (for architecture i386): current ar archive random library
またはフェ
mac:libs User$ otool -vf ./libboost_regex.a
Fat headers
fat_magic FAT_MAGIC
nfat_arch 3
architecture armv6
cputype CPU_TYPE_ARM
cpusubtype CPU_SUBTYPE_ARM_V6
capabilities 0x0
offset 68
size 9550024
align 2^2 (4)
architecture armv7
cputype CPU_TYPE_ARM
cpusubtype CPU_SUBTYPE_ARM_V7
capabilities 0x0
offset 9550092
size 9390544
align 2^2 (4)
architecture i386
cputype CPU_TYPE_I386
cpusubtype CPU_SUBTYPE_I386_ALL
capabilities 0x0
offset 18940636
size 9595040
align 2^2 (4)
しかし今、ライブラリをビルドすると、「otool」と「file」はそのアーキテクチャを表示できません。
mac:libs User$ otool -vf ./mylib_meta.a
Archive : ./mylib_meta.a
どういう意味ですか?ライブラリの構築でどのような間違いを犯す可能性がありますか?
更新: イゴール、ありがとう!
コマンドでオブジェクトファイルを抽出しました:
ar -t mylib.a
ar -xv mylib.a myobj.o
-t バイナリのリストを表示します
-xv は具体的なバイナリ ファイルを抽出します