在linux中把汇编或c程序交叉编译成二进制文件烧录开发板过程详解

原创 2015年05月08日 13:12:05

嵌入式开发中在宿主机中要编译能在目标机中运行的程序文件需要用到一种工具:交叉工具链。其中我们常用的交叉工具有以下几种:交叉编译器,交叉连接器,交叉转换器,交叉ELF文件工具,交叉反汇编器。以下通过实例将这些做一些介绍。

分解以下讲一个led.S文件编译成可烧录的二进制文件的详细过程:

               首先需要编译生成.o文件,使用到了交叉编译器 arm-linux-gcc:arm-linux-gcc -g -c led.S      生成led.o文件。

其次连接文件需要用到交叉连接器:arm-linux-ld  -T led.lds -o led.elf led.o                            生成:led.elf文件。注意:led.lds是连接器脚本

此时需要用到文件格式转换器将ELF格式转换为二进制.bin格式:arm-linux-objcopy -o binary led.elf led.bin       生成:led.bin文件。

这样就可以想开发板中烧录二进制文件,实现你需要的功能。

以上还有两个没有涉及到:交叉ELF文件工具arm-linux-readelf  ,它是用来读取elf文件格式的一些信息,比如运行命令arm-linux-readelf -a led.S


交叉反汇编器 arm-linux-objdump可以将c代码反汇编为汇编程序。

以上交叉编译连接过程如果文件又大又多会非常繁琐,因此linux中运用更有效率的工具makefile

Makefile中最重要的组成部分是“规则”
规则:用于说明如何生成目标文件,规则的格式
如下:
targets : prerequisites
command
目标 依赖 命令
特别提供:命令需要使用【TAB】键空格


版权声明:本文为博主原创文章,未经博主允许不得转载。

Linux安装ARM交叉编译器步骤

安装交叉编译环境 ==================================== gcc是linux环境下的asm和c语言编译器,生成的是可以在x86平台上运行的可执行程序; 而在开发...
  • lsk_wj
  • lsk_wj
  • 2016年01月03日 00:34
  • 4344

linux中将测试用C文件编译成bin供开发人员快速测试用操作方法

1、Android.mk写法: LOCAL_PATH:= $(call my-dir)   include $(CLEAR_VARS) LOCAL_SRC_FILES:= pn547_ii...

交叉编译环境下gcc编译汇编文件

1、arm-linux-gcc: 首先编写C程序,假设名字为test.c,保存test.c文件内容: [cpp] view plai...

lua学习:把lua文本文件“编译”成二进制的文本

当你发布lua时,你或许不想用户看到你的lua源码,更不想用户修改你的lua代码和系统内部的秘密,那就需要用别的方式来发布。 最终的文本文件可以通过lua作者提供的标准发布版本中的程序来执行。这个程序...
  • losophy
  • losophy
  • 2013年10月01日 19:12
  • 9984

ARM+linux环境下程序的开发和烧录

一  方法一( 串口通讯 ):         1.  在PC开发端的linux环境中写好源代码。         2.  使用交叉编译器arm-linux-gcc编译之。     ...

在Linux系统下编译并执行C++程序

在Linux下编译和执行程序文件

用gcc编译成可执行程序

#gcc hello.c 该命令将hello.c直接生成最终二进制可执行程序a.out 这条命令隐含执行了(1)预处理、(2)汇编、(3)编译并(4)链接形成最终的二进制可执行程序。这里未指定输出...

菜鸟攻略–C语言多文件编程初探(二):使用 gcc 手动编译多文件 C 程序

菜鸟攻略–C语言多文件编程初探(二):使用 gcc 手动编译多文件 C 程序四年前我发布了一篇菜鸟攻略–C语言多文件编程初探(一),没想到这篇文章成了我博客上阅读量最多,评论数也最多的文章。当时我读大...

使用nasm和gcc生成无格式的二进制文件

前两天看到一篇文章,使用C编译器创建无格式的二进制文件(i386+)(1-6)(译)   http://xieyubo.spaces.live.com/blog/cns!55B39819C9DA...

使用GCC生成无格式二进制文件(plain binary files)

使用C语言生成一个二进制文件使用自己喜欢的文本编辑器写一个test.c:int main(){}再使用如下命令编译:gcc –c test.cld –o test –Ttext 0x0 –e main...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在linux中把汇编或c程序交叉编译成二进制文件烧录开发板过程详解
举报原因:
原因补充:

(最多只允许输入30个字)