问题标签 [elf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
18134 浏览

linux - 如何找到未满足的 ELF 依赖项?

我使用 LSB SDK 构建了一个测试 ELF 程序(请注意,我的问题并非特定于 LSB):

但我无法启动它(是的,我向你保证文件目录中......):

我认为有一个 ELF 依赖项不满足,但我不知道如何找到它。是否有类似于 ldd 的库工具可用于查找丢失的链接?

我认为这与 2.6.15/2.6.28-15 的差异无关,因为 LSB 编译器正在工作:

以防万一,这里是 a.out 的 ELF 动态部分:

0 投票
2 回答
1387 浏览

arrays - 在链接器文件的 .bss 部分中对齐静态数组

我有一个功能:

和一个链接器文件:

我需要静态数组(.bss 数据)在 4 字节边界上对齐,但似乎数组拒绝这样做。结构和原始类型可以很好地对齐(参见填充线),但是数组已经全部结束了。这是我的地图文件:

有人知道如何对齐数组吗?

0 投票
4 回答
1286 浏览

linux - 按需加载/卸载 ELF 部分?

对于一个相当模糊的用例,我想要一个(大型)静态链接的 Linux 可执行文件,由一小段控制代码和大量静态(只读)数据组成。是否有可能,为了节省内存,让加载器只加载控制代码的部分,然后根据需要手动加载 RO 数据的部分,并在处理完成后再次卸载它们?

这可能吗?

(我想数据流(在文件系统级别)可以用来解决这个问题,但它们对我不可用(EXT3)并且分发会很棘手,因为数据流很容易丢失。)

0 投票
3 回答
118514 浏览

linux - 如何在 Linux 上检查 ELF 文件的数据部分的内容?

我一直在objdump查看 Linux ELF 二进制文件中的汇编代码。

rodata有时会通过存储在(只读数据)部分中的跳转表进行间接跳转。

如何获取objdump或任何其他工具向我显示此数据部分的内容?

我可以执行程序并检查调试器中的相关地址,但我不想这样做,因为它必须以交互方式完成。

理想的答案将确定一个工具,它不仅可以向我显示内容,还可以让我控制显示格式,就像这样od做一样。

0 投票
3 回答
5880 浏览

c++ - Linux 上 C 中字符数组和指针的分段错误

所以我有以下程序:

它在“one [1] ='b'”行上出现段错误,这是有道理的,因为指针“one”指向的内存必须在只读内存中。但是,问题是为什么“two[1]='b'”行没有段错误?查看 gcc 的程序集输出:

我们看到两个字符串都在rodata部分,所以它们是只读的。那么“two[1]='b'”这一行怎么没有段错误呢?

0 投票
4 回答
6631 浏览

linux - Linux 用户空间 ELF 加载器

我需要做一件不寻常的事情:手动执行一个 elf 可执行文件。即将所有部分加载到正确的位置,查询 main() 并调用它(然后清理)。可执行文件将被静态链接,因此无需链接库。我还控制基址,所以不用担心可能的冲突。

那么,是否有任何图书馆呢?

我找到了 OSKit 及其 liboskit_exec,但项目似乎自 2002 年以来就已经死了。

我可以参与部分项目(当然,尊重许可证)并根据我的需要定制它们,但由于我在 linux 世界中相当菜鸟,我什至不知道在哪里可以找到这些部分!:)

PS。我需要 ARM 平台。

UPD好吧,加载精灵的问题似乎需要一些很好的知识(叹气),所以我出去阅读一些规范和手册。我想我会坚持使用仿生/链接器和 libelfsh。多谢你们!

总结发现:

0 投票
2 回答
2699 浏览

c++ - 添加源代码到elf文件

我想将我的 C++ 源代码添加到相应的elf二进制文件中,并且我正在寻找执行此操作的最佳方法。(我正在使用我的代码的多个版本,并不是每个版本都应该提交到 svn 中)。

我可以在不elf使用 bash>>运算符破坏文件的情况下附加源代码吗?或者objcopy --add-section有办法做到这一点?

顺便说一句,有没有更好的主意,只是从源代码文件中递归地确定grep所有行以确定使用的所有源代码文件?#include

0 投票
1 回答
4235 浏览

linux - 为什么 ld 不尊重 '-rpath-link' 选项?

我使用 strace 检测到这一点:


我很困惑; 根据手册 ld 首先必须尝试在-rpath-link路径中查找。

0 投票
4 回答
17660 浏览

windows - Linux 上的 COFF 或 Windows 上的 ELF

是否可以在 UNIX 上运行 COFF 可执行文件或在 Windows 上运行 ELF 可执行文件?在 Windows 和 UNIX 上运行这两种文件类型的步骤是什么。我只是好奇。

0 投票
1 回答
989 浏览

gdb - Solaris 10 上的 GNU gdb 6.4 无法识别文件格式

以下详细信息来自运行 Solaris 10 的 Sun 机器中的会话。

有关为什么 gdb 无法识别文件格式的任何详细信息devli?我在 Internet 上进行了搜索,但找不到与此特定问题相关的任何内容。任何指针都会有所帮助。

a.c进入a,使用 gcc 构建;devli使用 Sun ONE Studio 8。