问题标签 [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.

0 投票
1 回答
3715 浏览

objcopy - objcopy --gap-fill 仅用于特殊部分

是否可以仅将 objcopy-parameter --gap-fill 用于某些特定部分?我不想用例如 0xAA 填充所有内容,因为我想在现有的 EEPROM 中保留一些旧部分。当它们被例如 0xAA 覆盖时会很糟糕。但在其他一些部分,我完全想要这种行为。

感谢您的帮助。

0 投票
1 回答
2786 浏览

arm - 在使用 OpenOCD 刷新我的 ARM 微控制器之前,我是否需要使用 objcopy?

ARM微控制器的“正常”ARM交叉编译通常包括三个或四个步骤:

  1. 使用汇编器将启动代码(如果是汇编)汇编到目标文件中
  2. 使用编译器将任何源代码编译成目标文件
  3. 使用链接器将目标文件链接到 .elf 文件中
  4. 使用 objcopy 将 .elf 文件转换为 .hex 文件
  5. 刷新 .hex 文件

这是我不确定的第 4 步。在 OpenOCDflash write_image命令的文档中,它指出:

文件 [type] 可以明确指定为 bin(二进制)、ihex(Intel hex)、elf(ELF 文件)、s19(摩托罗拉 s19)。内存或生成器。

很明显 OpenOCD 支持 elf 文件,但我不知道这究竟意味着什么。这仅在某些目标上支持吗?JTAG/SWD 适配器是否必须提供某种类似 objcopy 的功能才能正常工作?它只是从 OpenOCD 还不支持 elf 文件的时代开始的遗留物吗?

0 投票
1 回答
165 浏览

c - 重定位二进制代码时出错(gcc -> objdata -> 加载二进制代码 -> 并执行)

我正在实现一种遗传算法,这些生物是具有三个指针作为输入和输出的函数。都有以下形式:

这些生物应该有几千个,而且非常小,所以我决定不使用共享对象,而是简单地加载原始代码并运行它。

生物被编译

然后我这样取函数的代码

然后将代码加载到内存中并运行它

这项工作直到源代码中没有浮点文字,例如代码:

编译产生这个工作代码:

但是具有浮点文字的函数为:

生成的代码在执行时不会给出正确的结果

每次使用%rip生成指令时都会发生这种情况。如何将 gcc 设置为不生成此代码?理论上,插入一个浮点常量可以像这里那样做吗?

你有什么建议可以避免这个问题吗?

0 投票
2 回答
1964 浏览

linux-kernel - 为什么我在运行 readelf -s 时得到这个输出

我有 Linux 内核并尝试使用 objcopy 工具在其上生成 ELF Header,下面是第一步

在此之后我想使用 readelf -s main.o 读取符号表,但是得到奇怪的符号,下面是输出

现在应该能够看到像

任何机构都可以让我知道我在哪里做错了吗?还是预期的一个?

为什么我想看到正确的符号,因为必须做类似下面的事情

0 投票
5 回答
7073 浏览

c++ - objcopy 将目录路径名添加到符号名称之前

我打算使用objcopy将文本文件的二进制形式包含到可执行文件中。(在运行时我需要文件作为字符串)。这工作正常,直到链接器需要从符号名称中找到引用。问题是objcopy在符号名称前面加上文件的路径名。由于我使用 GNU Autotools 来发送包,所以这个前置路径名发生了变化,我不知道在 C/C++ 程序中使用什么外部链接器符号。

libtest.a使用(从 Makefile.am 中提取)生成:

我怎样才能告诉objcopy我们文件名的词干作为链接器符号?还是有其他解决问题的方法?

0 投票
0 回答
1336 浏览

c++ - windows的交叉编译。Objcopy 似乎给出了错误的目标文件

我有一个我最初在 linux 中编写的程序,它使用 objcopy 在可执行文件中嵌入一些图像以在运行时使用。我在linux中对此完全没有问题,并且运行良好。

但是,当我尝试交叉编译 Windows 程序时,我在链接阶段得到一个未定义引用的列表,这表明 objcopy 失败了。有人可以指出我正确的方向以使其正确交叉编译。我知道这不是代码问题,因为代码是可移植的。

用于与 objcopy 交叉编译的命令

链接阶段产生的错误

我在代码中访问数据的宏

i586-mingw32-objcopy 支持的格式

我正在尝试编译到 Windows (x86)。我编译的机器是Linux(x86)。

0 投票
2 回答
22353 浏览

linux - 如何从elf文件格式创建可执行的十六进制

我对此非常陌生,我有 elf 文件input.out,需要从中创建十六进制可执行文件。我正在使用 objcopy 创建 intel hex 格式的可执行文件,如下所示

通过这个 out.hex 包含来自所有部分的数据(.interp、.note.ABI-tag 等),但我不确定是否所有这些都是可执行文件所必需的。.text 部分是否足以创建可执行的十六进制,所以我可以像下面这样使用还是需要更多的部分

此外,如果有任何好的参考资料可以详细了解这一点,我在 Goggling 中找不到太多。可能我不知道要搜索什么。

0 投票
3 回答
8929 浏览

gcc - GCC:如何告诉 GCC 将“main”函数放在 .text 部分的开头?

我刚刚开始学习一些 ARM 编程,但遇到了一个有点烦人的问题。我用来编译源代码的工具链是 Sourcery CodeBench Lite 2013.05-23(可以在这里找到:https ://sourcery.mentor.com/GNUToolchain/release2449 )

我需要告诉 GCC 或 LD 或 OBJCOPY 将“main”函数的编译字节码放在 .text 部分的开头。

有什么办法可以做到这一点?(也许通过链接器脚本?)

谢谢

0 投票
2 回答
3196 浏览

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):

  1. Writes a new serial number to 0x1000
  2. Writes a new string to 0x1008
  3. 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!!

0 投票
1 回答
24360 浏览

linux - 使用 GNU objcopy 从 Elf 制作可执行二进制文件

我想通过以下方式复制一个可执行的 ELF 文件:

很遗憾:

结果:无法执行二进制文件

有什么办法可以保留文件的可执行性?