Uboot编译为啥没有生成elf格式的文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Uboot编译为啥没有生成elf格式的文件相关的知识,希望对你有一定的参考价值。

我用make all 执行
只有生成u-boot.bin 和u-boot.srec
就是没有ELF格式的,请问怎么配置才能生成ELF?

1、通过gcc编译出来的是elf文件
2、通过objcpy可以把elf文件转换为bin文件

CC=ppc-gcc
LD=ppc-ld
OBJCOPY=ppc-objcopy
$(CC) -g $(CFLAG) -c boot.S
#先将boot.S文件生成boot.o
$(LD) -g -Bstatic -T$(LDFILE) \\
-Ttext 0x12345600 boot.o \\
--start-group -Map boot.map -o boot.elf 
#再将boot.o生成boot.elf
$(OBJCOPY) -O binary -R .note -R .comment -S boot.elf boot.bin
#接着将 boot.elf 转换为 boot.bin
#使用 -O binary (或--out-target=binary) 输出为原始的二进制文件
#使用 -R .note  (或--remove-section)    输出文件中不要.note这个section,缩小了文件尺寸
#使用 -S        (或 --strip-all)        输出文件中不要重定位信息和符号信息,缩小了文件尺寸
参考技术A 编译后当前文件夹下有个u-boot文件,该文件是elf格式(可以用file u-boot查看文件类型),u-boot.bin和u-boot.srec就是由u-boot文件而来的本回答被提问者采纳 参考技术B 先采纳 再教可否? 我不想打那么多字 最后没采纳追问

大哥,我是讲信用的,采纳了怎么回答呀。
我提高悬赏。解决一个问题采纳一个。不多问。

Android 逆向ELF 文件格式 ( ELF 文件简介 | ELF 文件结构 )





一、ELF 文件简介



ELF 文件是 Executable and Linkable Format ( 可执行 和 可链接 格式 ) 的文件 ;

链接 一般是在编译阶段 , 执行 一般是在运行阶段 ; 在这两个阶段都会用到 ELF 格式的文件 ;

参考 【C 语言】编译过程 分析 ( 预处理 | 编译 | 汇编 | 链接 | 宏定义 | 条件编译 | 编译器指示字 ) 博客 ;

ELF 文件 对应的 Linux 中的目标文件格式有 : 库文件 , 可执行文件 , 编译中间文件 ; 编译中间文件有 .a , .o , .s 文件 ;

库文件 , 可执行文件 , 编译中间文件 , 都是 ELF 格式的文件 ;


在 Android 应用运行时 , ELF 文件的大部分内容 , 会被 映射到内存中 ; 这就意味着 Android 应用内存中的很多数据 , 会遵循 ELF 文件格式的规范 ;


ELF 文件格式最常见的形式就是 .so 动态库 ;

ELF 文件的特点 : ELF 文件是以 7F 45 4C 46 开头 , 其中 7F 是一个二进制标志 , 45 4C 46 是 ELF 字符对应的 ASCII 码 ;





二、ELF 文件结构



ELF 文件由以下四部分组成 :

  • ELF 文件头
  • ELF 程序头 : ELF 程序头 会告知 节区头部表的位置 ;
  • 节区或段
  • 节区头部表 : 节区头部表 会告知 ELF 文件中有多少个 节区 , 一般 节区头部表 一般都在 ELF 文件尾部 ;

以上是关于Uboot编译为啥没有生成elf格式的文件的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向ELF 文件格式 ( ELF 文件简介 | ELF 文件结构 )

Android 逆向ELF 文件格式 ( ELF 文件简介 | ELF 文件结构 )

ELF 文件和 bin 文件有啥区别?

手写ELF结构解析工具

02 elf 的 binary 解析

02 elf 的 binary 解析