一、交叉编译
我们下载到开发板上的镜像文件,往往都是开源代码,先移植(软硬件不匹配需要移植也就是配置),然后编译成机器码生成可执行文件形成的镜像文件,接下来将讨论如何移植这些文件。

1.1编译原理

汇编语言与机器码一 一对应且无法移植,c语言不区分平台
1.机器码(二进制)是处理器能直接识别的语言,不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同的处理器机器码不同,所以机器码不可移植
2.汇编语言是机器码的符号化,即汇编就是用一个符号来代替一条机器码,所以不同的处理器汇编也不一样,即汇编语言也不可移植
3.C语言在编译时我们可以使用不同的编译器将C源码编译成不同架构处理器的汇编,所以C语言可以移植
1.2 GCC编译过程

在ubuntu上写一个test.c的文件说明此过程
1>.在C语言中以#开头的是预处理指令,不能被CPU执行,即不能汇编和编译;预处理宏定义替换,头文件展开即如下所示。
2>.编译:编译为汇编代码
3>.汇编:汇编语言转换为机器码
4>.链接:不同的机器码链接到一块(组内负责各个模块的代码汇编后链接成一个文件)


本文介绍了交叉编译的过程,包括C语言的可移植性、GCC编译步骤,重点讲解了ELF文件格式及其相关命令,以及交叉编译工具链中的常用工具,如size、nm、strip和objdump。同时提到了BIN文件格式与嵌入式开发中的符号表和瘦身策略。
最低0.47元/天 解锁文章
1181

被折叠的 条评论
为什么被折叠?



