首页 > 解决方案 > AWS)将 C sdk 交叉编译到 ARM - 不是动态可执行文件

问题描述

我通过 gnueabigcc 交叉编译 AWS Embedded CSdk 并将其放入设备中。但是当我运行它时,有一个错误说我无法运行它,因为我没有库。当我在 Linux 上尝试 ldd“文件名”时,出现“不是动态可执行文件”这句话。

我想是因为无法连接库,所以想请教一下编译好的文件和库如何连接到ARM板子上。

这是 objdump 文件

mqtt_demo_mutual_auth:     file format elf32-little

Program Header:
0x70000001 off    0x000107d8 vaddr 0x000207d8 paddr 0x000207d8 align 2**2
         filesz 0x00000008 memsz 0x00000008 flags r--
    PHDR off    0x00000034 vaddr 0x00010034 paddr 0x00010034 align 2**2
         filesz 0x00000120 memsz 0x00000120 flags r--
  INTERP off    0x00000154 vaddr 0x00010154 paddr 0x00010154 align 2**0
         filesz 0x00000013 memsz 0x00000013 flags r--
    LOAD off    0x00000000 vaddr 0x00010000 paddr 0x00010000 align 2**16
         filesz 0x000107e4 memsz 0x000107e4 flags r-x
    LOAD off    0x00010eec vaddr 0x00030eec paddr 0x00030eec align 2**16
         filesz 0x00000184 memsz 0x00000624 flags rw-
 DYNAMIC off    0x00010ef8 vaddr 0x00030ef8 paddr 0x00030ef8 align 2**2
         filesz 0x00000108 memsz 0x00000108 flags rw-
    NOTE off    0x00000168 vaddr 0x00010168 paddr 0x00010168 align 2**2
         filesz 0x00000044 memsz 0x00000044 flags r--
   STACK off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**4
         filesz 0x00000000 memsz 0x00000000 flags rw-
   RELRO off    0x00010eec vaddr 0x00030eec paddr 0x00030eec align 2**0
         filesz 0x00000114 memsz 0x00000114 flags r--

Dynamic Section:
  NEEDED               libclock_posix.so
  NEEDED               libopenssl_posix.so
  NEEDED               libc.so.6
  NEEDED               ld-linux.so.3
  RUNPATH              /home/youna/aws-iot-device-sdk-embedded-c/a/lib
  INIT                 0x00011060
  FINI                 0x0001cc9c
  INIT_ARRAY           0x00030eec
  INIT_ARRAYSZ         0x00000004
  FINI_ARRAY           0x00030ef0
  FINI_ARRAYSZ         0x00000004
  GNU_HASH             0x000101ac
  STRTAB               0x00010924
  SYMTAB               0x00010434
  STRSZ                0x00000594
  SYMENT               0x00000010
  DEBUG                0x00000000
  PLTGOT               0x00031000
  PLTRELSZ             0x000000a8
  PLTREL               0x00000011
  JMPREL               0x00010fb8
  REL                  0x00010fa8
  RELSZ                0x00000010
  RELENT               0x00000008
  VERNEED              0x00010f58
  VERNEEDNUM           0x00000002
  VERSYM               0x00010eb8

Version References:
  required from ld-linux.so.3:
    0x0d696914 0x00 04 GLIBC_2.4
  required from libc.so.6:
    0x06969197 0x00 03 GLIBC_2.17
    0x0d696914 0x00 02 GLIBC_2.4

我 ldd 这个文件,

 $ ldd mqtt_demo_mutual_auth 
    not a dynamic executable

这是文件格式

$ file mqtt_demo_mutual_auth 
mqtt_demo_mutual_auth: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, 
interpreter /lib/ld-linux.so.3, BuildID[sha1]=0190fb3780b414008a5fe111fa7f05ad6f81ffc0, for GNU/Linux 
3.2.0, not stripped

标签: amazon-web-services

解决方案


推荐阅读