使用objcopy将.data重命名为.rodata后输出被填充为零
问题:将二进制文件嵌入为const段时数据被清零
我参考一份实用指南,使用objcopy将大型数据文件嵌入代码,初始命令如下:
arm-none-eabi-objcopy -I binary -O elf32-littlearm "raw_data.bin" "raw_data.o"
该命令生成的输出文件有效,但我需要将数据存储为const类型,于是通过以下命令重命名段:
arm-none-eabi-objcopy -I binary -O elf32-littlearm --rename-section .data=.rodata,alloc,load,readonly "raw_data.bin" "raw_data.o"
生成的文件大小与之前一致,但所有数据都被替换为零。我通过objdump验证了这一结果:
> arm-none-eabi-objdump -s "raw_data.o" raw_data.o: file format elf32-littlearm Contents of section .rodata: 00000 00000000 00000000 00000000 00000000 ................ 00010 00000000 00000000 00000000 00000000 ................ 00020 00000000 00000000 00000000 00000000 ................ 00030 00000000 00000000 00000000 00000000 ................ 00040 00000000 00000000 00000000 00000000 ................ 00050 00000000 00000000 00000000 00000000 ................ 00060 00000000 00000000 00000000 00000000 ................ 00070 00000000 00000000 00000000 00000000 ................ 00080 00000000 00000000 00000000 00000000 ................ ... and so on ...
内容的提问来源于stack exchange,提问作者Jack S.
相关产品推荐
相关产品推荐

