ビルドコマンドにアクセスできません。システムにライブラリがあるだけです。
リンクしてテストするhardfp実行可能ファイルを作成できると思いますが、もっと簡単な方法があるかどうか疑問に思っています。
readelf -A library.so
を実行します。印刷されたタグのリストにTag_ABI_VFP_args: VFP registers
が含まれている場合、それはhardfp
バイナリです。それ以外の場合は、softfp
と想定します。
例えば。 readelf -A /lib/arm-linux-gnueabihf/libm.so.6
は
Attribute Section: aeabi
File Attributes
Tag_CPU_name: "7-A"
Tag_CPU_Arch: v7
Tag_CPU_Arch_profile: Application
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-2
Tag_FP_Arch: VFPv3-D16
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_denormal: Needed
Tag_ABI_FP_exceptions: Needed
Tag_ABI_FP_number_model: IEEE 754
Tag_ABI_align_needed: 8-byte
Tag_ABI_align_preserved: 8-byte, except leaf SP
Tag_ABI_enum_size: int
Tag_ABI_HardFP_use: SP and DP
Tag_ABI_VFP_args: VFP registers
Tag_ABI_optimization_goals: Aggressive Speed
Tag_CPU_unaligned_access: v6
反対側では、readelf -A /lib/arm-linux-gnueabi/libm.so.6
が生成します
Attribute Section: aeabi
File Attributes
Tag_CPU_name: "7-A"
Tag_CPU_Arch: v7
Tag_CPU_Arch_profile: Application
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-2
Tag_FP_Arch: VFPv3-D16
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_denormal: Needed
Tag_ABI_FP_exceptions: Needed
Tag_ABI_FP_number_model: IEEE 754
Tag_ABI_align_needed: 8-byte
Tag_ABI_align_preserved: 8-byte, except leaf SP
Tag_ABI_enum_size: int
Tag_ABI_optimization_goals: Aggressive Speed
Tag_CPU_unaligned_access: v6
readelf
を使用します。
これは、PocoのARMビルドからの出力例です:
$ readelf libPocoFoundation.so -h
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: ARM
Version: 0x1
Entry point address: 0x61e50
Start of program headers: 52 (bytes into file)
Start of section headers: 1078048 (bytes into file)
Flags: 0x5000402, has entry point, Version5 EABI, hard-float ABI
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 7
Size of section headers: 40 (bytes)
Number of section headers: 28
Section header string table index: 27
フラグセクションでは、elfファイルに関するデータが一覧表示されます。これらは ARM ELF仕様 で定義されています。表4-2を確認してください。私の場合、これはハードフロートコンパイラで構築されているため、ハードフロートがフラグとしてリストされています。
ソフトフロートライブラリでは、フラグ行は次のようになります。
Flags: 0x5000202, has entry point, Version5 EABI, soft-float ABI