为什么intel openvino R5预编译的二进制文件在我的raspberry pi OS上显示“不可执行”?

时间:2019-02-28 09:09:34

标签: raspberry-pi3 raspbian glibc elf openvino

预编译的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

作为一个测试,我尝试在我的OS上从raspbian运行一个随机二进制文件,并且工作正常。我还尝试在raspbian上从我的操作系统上运行一个随机二进制文件,它也可以正常工作。

所以现在我有点不解,这可能是什么原因造成的。

我阅读了intel二进制文件:

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的可执行文件可以在我的OS上正常运行,甚至可以编译为较旧的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都是这样,所以我也认为那里没有问题

欢迎提出任何建议! 谢谢

1 个答案:

答案 0 :(得分:1)

Sooooo,在进行了更多搜索和修剪之后,似乎我必须在我的glibc编译中启用“缩略图”编译选项。我发现使用该选项再次编译了自己的操作系统的子集,然后将这样的二进制文件上传到我的旧操作系统,然后看到了完全相同的消息……所以我启动了我的拇指操作系统,就可以了!