问题标签 [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.
linux - 如何找到未满足的 ELF 依赖项?
我使用 LSB SDK 构建了一个测试 ELF 程序(请注意,我的问题并非特定于 LSB):
但我无法启动它(是的,我向你保证文件在目录中......):
我认为有一个 ELF 依赖项不满足,但我不知道如何找到它。是否有类似于 ldd 的库工具可用于查找丢失的链接?
我认为这与 2.6.15/2.6.28-15 的差异无关,因为 LSB 编译器正在工作:
以防万一,这里是 a.out 的 ELF 动态部分:
arrays - 在链接器文件的 .bss 部分中对齐静态数组
我有一个功能:
和一个链接器文件:
我需要静态数组(.bss 数据)在 4 字节边界上对齐,但似乎数组拒绝这样做。结构和原始类型可以很好地对齐(参见填充线),但是数组已经全部结束了。这是我的地图文件:
有人知道如何对齐数组吗?
linux - 按需加载/卸载 ELF 部分?
对于一个相当模糊的用例,我想要一个(大型)静态链接的 Linux 可执行文件,由一小段控制代码和大量静态(只读)数据组成。是否有可能,为了节省内存,让加载器只加载控制代码的部分,然后根据需要手动加载 RO 数据的部分,并在处理完成后再次卸载它们?
这可能吗?
(我想数据流(在文件系统级别)可以用来解决这个问题,但它们对我不可用(EXT3)并且分发会很棘手,因为数据流很容易丢失。)
linux - 如何在 Linux 上检查 ELF 文件的数据部分的内容?
我一直在objdump
查看 Linux ELF 二进制文件中的汇编代码。
rodata
有时会通过存储在(只读数据)部分中的跳转表进行间接跳转。
如何获取objdump
或任何其他工具向我显示此数据部分的内容?
我可以执行程序并检查调试器中的相关地址,但我不想这样做,因为它必须以交互方式完成。
理想的答案将确定一个工具,它不仅可以向我显示内容,还可以让我控制显示格式,就像这样od
做一样。
c++ - Linux 上 C 中字符数组和指针的分段错误
所以我有以下程序:
它在“one [1] ='b'”行上出现段错误,这是有道理的,因为指针“one”指向的内存必须在只读内存中。但是,问题是为什么“two[1]='b'”行没有段错误?查看 gcc 的程序集输出:
我们看到两个字符串都在rodata部分,所以它们是只读的。那么“two[1]='b'”这一行怎么没有段错误呢?
linux - Linux 用户空间 ELF 加载器
我需要做一件不寻常的事情:手动执行一个 elf 可执行文件。即将所有部分加载到正确的位置,查询 main() 并调用它(然后清理)。可执行文件将被静态链接,因此无需链接库。我还控制基址,所以不用担心可能的冲突。
那么,是否有任何图书馆呢?
我找到了 OSKit 及其 liboskit_exec,但项目似乎自 2002 年以来就已经死了。
我可以参与部分项目(当然,尊重许可证)并根据我的需要定制它们,但由于我在 linux 世界中相当菜鸟,我什至不知道在哪里可以找到这些部分!:)
PS。我需要 ARM 平台。
UPD好吧,加载精灵的问题似乎需要一些很好的知识(叹气),所以我出去阅读一些规范和手册。我想我会坚持使用仿生/链接器和 libelfsh。多谢你们!
总结发现:
- 自由: http : //directory.fsf.org/project/libelf/
- elfsh 和 libelfsh(现在是 eresi 的一部分):http ://www.eresi-project.org/
- elfio(另一个 elf 库):http: //sourceforge.net/projects/elfio/
- OSKit 和 liboskit_exec(过时):http ://www.cs.utah.edu/flux/oskit/
- 仿生/链接器:https ://android.googlesource.com/platform/bionic
c++ - 添加源代码到elf文件
我想将我的 C++ 源代码添加到相应的elf
二进制文件中,并且我正在寻找执行此操作的最佳方法。(我正在使用我的代码的多个版本,并不是每个版本都应该提交到 svn 中)。
我可以在不elf
使用 bash>>
运算符破坏文件的情况下附加源代码吗?或者objcopy --add-section
有办法做到这一点?
顺便说一句,有没有更好的主意,只是从源代码文件中递归地确定grep
所有行以确定使用的所有源代码文件?#include
linux - 为什么 ld 不尊重 '-rpath-link' 选项?
我使用 strace 检测到这一点:
我很困惑; 根据手册 ld 首先必须尝试在-rpath-link
路径中查找。
windows - Linux 上的 COFF 或 Windows 上的 ELF
是否可以在 UNIX 上运行 COFF 可执行文件或在 Windows 上运行 ELF 可执行文件?在 Windows 和 UNIX 上运行这两种文件类型的步骤是什么。我只是好奇。
gdb - Solaris 10 上的 GNU gdb 6.4 无法识别文件格式
以下详细信息来自运行 Solaris 10 的 Sun 机器中的会话。
有关为什么 gdb 无法识别文件格式的任何详细信息devli
?我在 Internet 上进行了搜索,但找不到与此特定问题相关的任何内容。任何指针都会有所帮助。
a.c
进入a
,使用 gcc 构建;devli
使用 Sun ONE Studio 8。