问题标签 [objcopy]
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.
objcopy - objcopy --gap-fill 仅用于特殊部分
是否可以仅将 objcopy-parameter --gap-fill 用于某些特定部分?我不想用例如 0xAA 填充所有内容,因为我想在现有的 EEPROM 中保留一些旧部分。当它们被例如 0xAA 覆盖时会很糟糕。但在其他一些部分,我完全想要这种行为。
感谢您的帮助。
arm - 在使用 OpenOCD 刷新我的 ARM 微控制器之前,我是否需要使用 objcopy?
ARM微控制器的“正常”ARM交叉编译通常包括三个或四个步骤:
- 使用汇编器将启动代码(如果是汇编)汇编到目标文件中
- 使用编译器将任何源代码编译成目标文件
- 使用链接器将目标文件链接到 .elf 文件中
- 使用 objcopy 将 .elf 文件转换为 .hex 文件
- 刷新 .hex 文件
这是我不确定的第 4 步。在 OpenOCDflash write_image
命令的文档中,它指出:
文件 [type] 可以明确指定为 bin(二进制)、ihex(Intel hex)、elf(ELF 文件)、s19(摩托罗拉 s19)。内存或生成器。
很明显 OpenOCD 支持 elf 文件,但我不知道这究竟意味着什么。这仅在某些目标上支持吗?JTAG/SWD 适配器是否必须提供某种类似 objcopy 的功能才能正常工作?它只是从 OpenOCD 还不支持 elf 文件的时代开始的遗留物吗?
c - 重定位二进制代码时出错(gcc -> objdata -> 加载二进制代码 -> 并执行)
我正在实现一种遗传算法,这些生物是具有三个指针作为输入和输出的函数。都有以下形式:
这些生物应该有几千个,而且非常小,所以我决定不使用共享对象,而是简单地加载原始代码并运行它。
生物被编译
然后我这样取函数的代码
然后将代码加载到内存中并运行它
这项工作直到源代码中没有浮点文字,例如代码:
编译产生这个工作代码:
但是具有浮点文字的函数为:
生成的代码在执行时不会给出正确的结果
每次使用%rip生成指令时都会发生这种情况。如何将 gcc 设置为不生成此代码?理论上,插入一个浮点常量可以像这里那样做吗?
你有什么建议可以避免这个问题吗?
linux-kernel - 为什么我在运行 readelf -s 时得到这个输出
我有 Linux 内核并尝试使用 objcopy 工具在其上生成 ELF Header,下面是第一步
在此之后我想使用 readelf -s main.o 读取符号表,但是得到奇怪的符号,下面是输出
现在应该能够看到像
任何机构都可以让我知道我在哪里做错了吗?还是预期的一个?
为什么我想看到正确的符号,因为必须做类似下面的事情
c++ - objcopy 将目录路径名添加到符号名称之前
我打算使用objcopy
将文本文件的二进制形式包含到可执行文件中。(在运行时我需要文件作为字符串)。这工作正常,直到链接器需要从符号名称中找到引用。问题是objcopy
在符号名称前面加上文件的路径名。由于我使用 GNU Autotools 来发送包,所以这个前置路径名发生了变化,我不知道在 C/C++ 程序中使用什么外部链接器符号。
libtest.a
使用(从 Makefile.am 中提取)生成:
我怎样才能告诉objcopy
我们文件名的词干作为链接器符号?还是有其他解决问题的方法?
c++ - windows的交叉编译。Objcopy 似乎给出了错误的目标文件
我有一个我最初在 linux 中编写的程序,它使用 objcopy 在可执行文件中嵌入一些图像以在运行时使用。我在linux中对此完全没有问题,并且运行良好。
但是,当我尝试交叉编译 Windows 程序时,我在链接阶段得到一个未定义引用的列表,这表明 objcopy 失败了。有人可以指出我正确的方向以使其正确交叉编译。我知道这不是代码问题,因为代码是可移植的。
用于与 objcopy 交叉编译的命令
链接阶段产生的错误
我在代码中访问数据的宏
i586-mingw32-objcopy 支持的格式
我正在尝试编译到 Windows (x86)。我编译的机器是Linux(x86)。
linux - 如何从elf文件格式创建可执行的十六进制
我对此非常陌生,我有 elf 文件input.out
,需要从中创建十六进制可执行文件。我正在使用 objcopy 创建 intel hex 格式的可执行文件,如下所示
通过这个 out.hex 包含来自所有部分的数据(.interp、.note.ABI-tag 等),但我不确定是否所有这些都是可执行文件所必需的。.text 部分是否足以创建可执行的十六进制,所以我可以像下面这样使用还是需要更多的部分
此外,如果有任何好的参考资料可以详细了解这一点,我在 Goggling 中找不到太多。可能我不知道要搜索什么。
gcc - GCC:如何告诉 GCC 将“main”函数放在 .text 部分的开头?
我刚刚开始学习一些 ARM 编程,但遇到了一个有点烦人的问题。我用来编译源代码的工具链是 Sourcery CodeBench Lite 2013.05-23(可以在这里找到:https ://sourcery.mentor.com/GNUToolchain/release2449 )
我需要告诉 GCC 或 LD 或 OBJCOPY 将“main”函数的编译字节码放在 .text 部分的开头。
有什么办法可以做到这一点?(也许通过链接器脚本?)
谢谢
c++ - Edit variable values in ELF file?
I need to change a couple of variables in a compiled ELF file. Trying to explain this clearly I'll use a simple C struct as an example.
The single source file is compiled and linked (@ 0x1000) into MyFile.elf from MyFile.c:
Now I need a "console-tool" that (without compiling):
- Writes a new serial number to 0x1000
- Writes a new string to 0x1008
- Updates the checksum at 0x1028.
I have not been able to find a tool (objcopy etc?) that even does the first (1) task. Seems this should be a rather common scenario? I've written my own tool for now but would prefer a open source tool or similar.
Any suggestions / ideas / comments / criticisms are highly appreciated :D Thanks you!!
linux - 使用 GNU objcopy 从 Elf 制作可执行二进制文件
我想通过以下方式复制一个可执行的 ELF 文件:
很遗憾:
结果:无法执行二进制文件
有什么办法可以保留文件的可执行性?