1

预编译的 OpenVINO R5 发行版支持“raspbian 9”,并提供了一些预编译的库,用于与他们的“movidius”usb 棒接口。我试过了,例如他们的预编译“myriad_compile”程序确实在 raspbian 上运行。现在我在用 OpenADK 制作的定制操作系统上做同样的事情。它有官方的树莓派内核,使用 glibc 2.27,我也在使用 gcc 7.3.0。如果我运行完全相同的二进制文件,则会收到以下消息:

# ./myriad_compile
mksh: ./myriad_compile: not executable: 32-bit ELF file

作为测试,我尝试在我的操作系统上运行来自 raspbian 的随机二进制文件,它工作正常。我还尝试在 raspbian 上从我的操作系统运行随机二进制文件,它也运行良好。

所以现在我有点困惑,还有什么可能是造成这种情况的原因。

我对 intel 二进制文件做了一个 readelf:

pi@raspberrypi:~/armv7l $ readelf -A ./myriad_compile
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_rounding: Needed
  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_VFP_args: VFP registers
  Tag_CPU_unaligned_access: v6

这是我的工具链从我自己的 OpenADK 操作系统编译的名为“watchdogctl”的随机可执行文件:

pi@raspberrypi:~/armv7l $ readelf -A ./watchdogctl
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "Cortex-A53"
  Tag_CPU_arch: v8
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_FP_arch: FP for ARMv8
  Tag_Advanced_SIMD_arch: NEON for ARMv8
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_rounding: Needed
  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_VFP_args: VFP registers
  Tag_CPU_unaligned_access: v6
  Tag_MPextension_use: Allowed
  Tag_Virtualization_use: TrustZone and Virtualization Extensions

而这个来自 raspbian 9 的可执行文件在我的操作系统上运行没有问题,它甚至可以为较旧的 cpu 版本编译:

pi@raspberrypi:~/armv7l $ readelf -A /usr/bin/wpa_passphrase
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "6"
  Tag_CPU_arch: v6
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-1
  Tag_FP_arch: VFPv2
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_rounding: Needed
  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_VFP_args: VFP registers
  Tag_CPU_unaligned_access: v6

那么,我能否获得有关 raspbian 9 上存在的操作系统中缺少的内容的更多信息?我看到他们使用 glibc 2.24,但我有 2.27,所以我认为应该没问题,而且我有 gcc 7,他们使用 gcc 6,但这都是新的 ABI,所以我也不认为那里有问题.

欢迎任何建议!感谢

4

1 回答 1

1

Sooooo,经过更多的搜索和拉扯,似乎我必须在我的 glibc 编译中启用“thumb”编译选项。我通过使用该选项再次编译我自己的操作系统的一个子集来发现,然后将这样的二进制文件上传到我的旧操作系统,然后看到完全相同的消息出现......所以我然后启动了我的拇指操作系统,它工作了!

于 2019-02-28T12:05:47.767 回答