gpt4 book ai didi

c - objcopy 生成的原始二进制文件太大

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:34 30 4
gpt4 key购买 nike

已阅读此内容但无法解决我的问题。

huge binary files with objcopy

为了一些测试需要。我必须在链接时添加以下链接脚本。

.section_test 0x11323000: {  *(.section_test) }

此自定义段必须从大地址 0x11323000 开始。

然后使用objcopymips生成原始二进制文件

objcopymips -O binary vxWorks.st E0122.bin    

这一步使最终的原始二进制文件,bin 文件太大。从 27MB 到 270MB 以上。

这样就无法加载到我们只有64MB左右物理内存的机器上。

我可以在不删除任何部分的情况下减小它的大小并仍然让它可执行吗?

最佳答案

objcopy -O binary 根据节的加载地址生成程序的内存镜像。在您的情况下,.section_test 的加载和运行时地址是相同的,即加载地址是 0x11323000,这说明文件很大。

通常的解决方案是创建一个具有压缩加载镜像的可执行文件,并让程序在使用之前将必要的部分从加载地址复制到运行时地址。

例子:

.section_test 0x11323000 : AT(some-small-address) {  *(.section_test) }

.section_test 0x11323000 : {  *(.section_test) } AT> some-region-name

同时检查此页面: https://sourceware.org/binutils/docs/ld/Output-Section-LMA.html#Output-Section-LMA

关于c - objcopy 生成的原始二进制文件太大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19019199/

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