6

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 は具体的なバイナリ ファイルを抽出します

4

2 に答える 2