gpt4 book ai didi

c - gcc 的 objectcopy 创建的符号的宽度

转载 作者:行者123 更新时间:2023-12-04 11:10:31 30 4
gpt4 key购买 nike

我正在使用 objcopy 删除一些必要的脚本,以将资源文件(zip 文件)嵌入闪存(ARM 嵌入式东西)。

我像这样使用 objcopy:

arm-none-eabi-objcopy.exe -I binary -O elf32-littlearm -B arm --rename-section .data=.rodata input.zip input.zip.o
arm-none-eabi-nm.exe -S -t d input.zip.o
00006301 R _binary_input_zip_end
00006301 A _binary_input_zip_size
00000000 R _binary_input_zip_start

我需要知道的是 _end 和 _size 符号的宽度是多少。我只能猜测 _start 是一个可以像字节数组一样访问的地址:extern uint8_t _binary_input_zip_start[];。我假设 _end 和 _size 是“原生”int 大小,我想我可以安全地假设我可以将它们解释为 uint32_t。

但是我不能确定。我在 objcopy 的文档中找不到任何与“大小”相关的内容:https://sourceware.org/binutils/docs/binutils/objcopy.html

最佳答案

我不是 %100 确定这是否有效,但尝试将选项 --sort-size 添加到 arm-none-eabi-nm。这应该通过将它们与上面的下一个符号进行比较来按大小对符号进行排序。结合 -S 选项,它应该打印一个尺寸。希望这能帮助您推断出它们的宽度。

您使用的是什么 ARM 微处理器? 32 位是一个很好的猜测,但也有异常(exception)。如果您碰巧使用的是 Texas Instruments 部件,我可以提供更多帮助。我手边没有可以对其进行测试的 ARM 项目,但值得一试。如果这不起作用,我会继续挖掘。

资料来源:我的知识,并通过 http://manned.org/arm-none-eabi-nm 仔细检查

关于c - gcc 的 objectcopy 创建的符号的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27103806/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com