elf相关内容

如何使用十六进制编辑器在 Linux 中制作可执行的 ELF 文件?

只是好奇.这显然不是实际编程的一个很好的解决方案,但假设我想在 Bless(一个十六进制编辑器)中制作一个可执行文件. 我的架构是 x86.我可以制作什么非常简单的程序?你好世界?无限循环?类似于这个问题,但在Linux中. 解决方案 正如我在评论中提到的,您实际上将为可执行文件编写自己的 elf-header,以消除不需要的部分.还有几个必需的部分.Muppetlabs-TinyP ..
发布时间:2021-12-03 13:41:14 服务器开发

带有 GCC 的 C/C++:静态地将资源文件添加到可执行文件/库

有人知道如何使用 GCC 将任何资源文件静态编译成可执行文件或共享库文件吗? 例如,我想添加永远不会更改的图像文件(如果更改,我无论如何都必须替换该文件)并且不希望它们位于文件系统中. 如果这是可能的(我认为这是因为 Visual C++ for Windows 也可以这样做),我如何加载存储在自己的二进制文件中的文件?可执行文件是否解析自身、找到文件并从中提取数据? 也许我还没 ..
发布时间:2021-12-03 12:59:05 C/C++开发

ELF文件格式的section和segment有什么区别

来自维基可执行和可链接格式: 段包含文件运行时执行所需的信息,而段包含用于链接和重定位的重要数据.整个文件中的任何字节最多只能由一个节拥有,并且可以存在不为任何节所有的孤立字节. 但是section和segment有什么区别呢?在一个可执行的 ELF 文件中,一个段是否包含一个或多个段? 解决方案 但是section和segment有什么区别? 正是您引用的内容:段包 ..
发布时间:2021-12-03 12:56:46 服务器开发

CentOS 64 位错误的 ELF 解释器

我刚刚安装了 CentOS 6 64 位版本,我正在尝试在 64 位机器上安装 32 位应用程序并收到此错误: /lib/ld-linux.so.2: 错误的 ELF 解释器:没有那个文件或目录 我是 Linux 新手.我该如何解决? 解决方案 您使用的是 64 位系统,并且没有安装 32 位库支持. 安装(基线)对 32 位可执行文件的支持 (如果您在设置中不使用 ..
发布时间:2021-11-26 14:38:58 服务器开发

如何使用 go1.6.2 为 linux 32 位构建

是否可以设置 GOARCH 和 GOOS 值的任何组合以构建 ELF 32 位二进制文​​件? 解决方案 GOOS=linux 和 GOARCH=386. 更多示例:架构: 32 位 ->GOARCH=38664 位 ->GOARCH=amd64 操作系统: Windows ->GOOS=窗口Linux ->GOOS=linuxOS X ->GOOS=达尔文FreeBSD -> ..
发布时间:2021-11-26 14:23:20 服务器开发

CentOS 64 位错误的 ELF 解释器

我刚刚安装了 CentOS 6 64 位版本,我正在尝试在 64 位机器上安装 32 位应用程序并收到此错误: /lib/ld-linux.so.2: 错误的 ELF 解释器:没有那个文件或目录 我是 Linux 新手.我该如何解决? 解决方案 您使用的是 64 位系统,并且没有安装 32 位库支持. 安装(基线)对 32 位可执行文件的支持 (如果您在设置中不使用 ..
发布时间:2021-11-24 23:26:57 C#

如何使用 go1.6.2 为 linux 32 位构建

是否可以设置 GOARCH 和 GOOS 值的任何组合以构建 ELF 32 位二进制文​​件? 解决方案 GOOS=linux 和 GOARCH=386. 更多示例:架构: 32 位 ->GOARCH=38664 位 ->GOARCH=amd64 操作系统: Windows ->GOOS=窗口Linux ->GOOS=linuxOS X ->GOOS=达尔文FreeBSD -> ..
发布时间:2021-11-24 23:07:49 C#

在 aarch64 上运行 32 位精灵

我已经在 qemu 64 位 ARM 上安装了 Debian (遵循本教程) uname -a Linux 测试 4.9.0-7-arm64 #1 SMP Debian 4.9.110-1 (2018-07-05) aarch64 GNU/Linux 我正在尝试在其上运行 32 位 elf 文件,但有些工作不能: bash: ./file_2: 无法执行二进制文件:Exec 格式错 ..
发布时间:2021-11-17 22:45:46 其他开发

Linux 内核模块作弊 - Qemu Baremetal Xilinx Zynq A9

我的目标是模拟 Zynq-7000 上的 ARM A9 处理器,运行裸机软件.我为此尝试了 2 种不同的方法,但都遇到了障碍.任何有关如何进行的建议将不胜感激. StackOverflow 上的当前答案: 如何制作裸机 ARM 程序并在 QEMU 上运行它们? 链接到 Linux 内核模块作弊 (LKMC, 使用 v3.0) 使用 ./build --arch arm qem ..
发布时间:2021-11-17 22:39:15 其他开发

当 VMA != LMA 时加载 ELF

我有这个问题.我使用 ARM Cortex-A9 和 DS-5 来创建裸机固件.我修改了我的链接器文件,故意将 .data 部分 LMA 与 text 和 Rodata 部分相邻,因为它的默认运行时 VMA 位于 1MB 之外,而 .bin 图像大约为 1MB,但包含 90% 的零.所以我特意制作了 LMA != VMA 以节省空间.我还在 start.S 中添加了一段代码,用于将 .data 部 ..
发布时间:2021-11-17 22:27:00 其他开发

关于 Thumb-2 的 ARM/Thumb 互操作混淆

一段时间以来,我一直在阅读 ARM ISA 相关文档,到目前为止,我相信我对 ARM/Thumb 互操作的基础知识有了很好的理解.我将快速总结如下: 指令可以是 4 字节对齐 (ARM) 或 2 字节对齐 (Thumb). Thumb 和 ARM 指令位于不同的区域,即它们不会在没有显式处理器状态更改的情况下混合. 状态改变可以在执行 bx、blx、ldm、ldr 中的任何一个时发生.在 ..
发布时间:2021-11-17 22:24:29 其他开发

在 aarch64 上运行 32 位精灵

我已经在 qemu 64 位 ARM 上安装了 Debian (遵循本教程) uname -a Linux 测试 4.9.0-7-arm64 #1 SMP Debian 4.9.110-1 (2018-07-05) aarch64 GNU/Linux 我正在尝试在其上运行 32 位 elf 文件,但有些工作不能: bash: ./file_2: 无法执行二进制文件:Exec 格式错 ..
发布时间:2021-11-17 22:19:20 其他开发

分析 ELF 二进制文件以最小化其大小

我正在使用 GCC 将 V8 项目交叉编译到嵌入式 ARM 目标arm-gnueabi 交叉编译器.我成功地交叉编译了 V8 库本身,作为冒烟测试,我想将它链接到 Google 的 hello world 示例并在 ARM 板上运行. 库本身的时钟超过 1.2 MB: v8 % find out/arm.release/obj.target/-name '*.a' -exec du -h ..
发布时间:2021-11-17 22:17:52 其他开发

ARM 上 TLS 的代码序列

线程局部存储的 ELF 处理 文档提供了各种模型的装配序列(local exec/initial exec/general dynamic) 适用于各种架构.但不是 ARM——有什么地方可以看到 ARM 的此类代码序列吗?我正在开发一个编译器,并希望生成能够与平台链接器(程序和动态)一起正常运行的代码. 为了清楚起见,让我们假设一个 ARMv7 CPU 和一个非常新的内核和 glibc(比如 ..
发布时间:2021-11-17 22:12:42 其他开发

将 ELF 文件加载到内存中

我正在尝试将一个 elf 文件放入内存然后执行它,步骤如下: 1- 放入内存的文件 int main(){printf("你好世界!\n");返回0;} 2- 编译 gcc -o hello hello.c -static ELF 标题:魔法:7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00类别:ELF32数据:2 的补码,小端版本:1(当 ..
发布时间:2021-11-17 22:09:42 其他开发

CPU 相关代码:如何避免函数指针?

我为多个 CPU 编写了性能关键代码.我在运行时检测 CPU,并基于此为检测到的 CPU 使用适当的函数.所以,现在我必须使用函数指针并使用这些函数指针调用函数: void do_something_neon(void);void do_something_armv6(void);void (*do_something)(void);如果(CPU == 霓虹灯){do_something = d ..
发布时间:2021-11-17 22:09:09 其他开发

从 ARM-GCC 编译的 elf 文件中提取详细的符号信息(结构成员)

我使用 ARM-GCC 4.7.4 为 Cortex-M4 编译代码.对于我们的调试工具,我需要以人类可读的格式(例如 .txt)了解所有变量的名称、类型和地址.地图文件提供了大部分信息,遗憾的是没有提供如下结构内容: typedef struct { float32_t Ref;//输入:参考值float32_t Fdb;//变量:反馈值float32_t 错误;//输入:控制错误float3 ..
发布时间:2021-11-17 22:08:33 其他开发

Linux 用户空间 ELF 加载器

我需要做一件相当不寻常的事情:手动执行一个 elf 可执行文件.IE.将所有部分加载到正确的位置,查询 main() 并调用它(然后进行清理).可执行文件将被静态链接,因此无需链接库.我也控制基地址,所以不用担心可能的冲突. 那么,有没有相关的库? 我找到了 OSKit 和它的 liboskit_exec,但是这个项目似乎从 2002 年就已经死了. 我可以参与项目的一部分(当然 ..
发布时间:2021-11-17 22:05:49 其他开发

ARM ELF 对象内的函数大小不正确

目标文件的readelf输出: 符号表 '.symtab' 包含 15 个条目:Num:值大小类型绑定可见性 Ndx 名称0: 00000000 0 NOTYPE 本地默认值1: 00000000 0 文件本地默认 ABS fp16.c2: 00000000 0 部分本地默认值 13: 00000000 0 部分本地默认值 34: 00000000 0 部分本地默认值 45: 00000000 ..
发布时间:2021-11-17 22:03:19 其他开发