amazon-web-services - 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
解决方案
推荐阅读
- python - Outlook 365 (pywin32) - 无法访问电子邮件正文
- javascript - 这个正则表达式在我的出站链接中找到“out”是否正确?
- tfs - 如何将 Visual Studio 2019 工作区更改为新的域名帐户
- javascript - 是否可以直接从服务人员(ServiceWorkerGlobalScope)读取变量?
- c++ - 使用 Stroustrup 示例的 dynamic_cast<> 问题
- c# - 从 .netcore 类库中的 appsettings 动态写入和读取
- google-cloud-platform - GCP 每天都会对模型进行预测
- aws-lambda - 错误:运行时退出,但没有在 python lambda 中提供原因
- javascript - 如何自动单击javascript中的按钮?
- celery - 从以前的任务列表结果运行组任务