在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平台二进制elf文件

交叉编译还是用linux环境比较好,如果目标是window平台的VC,用MYSYS比较好,cygwin只是模式linux环境   交叉编译arm平台二进制文件,尤其是android上可用的二进制文...
  • wscem
  • wscem
  • 2012年06月28日 11:06
  • 789

gcc/g++编译 cpp/c文件 生成可执行文件

g++编辑cpp生成exe 编译重命名等: g++ –c Hello.cc  编译文件,生成目标文件 Hello.o g++ Hello.o –o abc  连接 并重命...
  • u013378306
  • u013378306
  • 2016年09月03日 19:07
  • 19068

linux下的二进制文件的编辑和查看

一、在Linux下查看二进制文件的软件: xxd (2进制) hexdump  (16进制)   二、编辑: 1、biew 2、hexedit 3、vim...
  • wh8_2011
  • wh8_2011
  • 2016年03月06日 10:21
  • 920

编译静态二进制文件

现在有一个文件"a.c",其中内容如下: #include int main() { printf("Hello World"); return 0; }使用"gcc a.c"命令,...
  • DSLZTX
  • DSLZTX
  • 2015年11月09日 08:03
  • 1018

【教程】在Ubuntu下搭建ARM处理器 arm-linux-gcc 交叉编译环境以及OpenJTAG + openocd 烧写环境

在Ubuntu下搭建ARM处理器 arm-linux-gcc 交叉编译环境以及OpenJTAG + openocd 烧写环境前言本教程所用操作系统为Ubuntu 16.04,所用ARM处理器为Sams...
  • techping
  • techping
  • 2016年11月14日 15:57
  • 831

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

嵌入式开发中在宿主机中要编译能在目标机中运行的程序文件需要用到一种工具:交叉工具链。其中我们常用的交叉工具有以下几种:交叉编译器,交叉连接器,交叉转换器,交叉ELF文件工具,交叉反汇编器。以下通过实例...
  • wangteng12345678
  • wangteng12345678
  • 2015年05月08日 13:12
  • 1968

Android 运行 C/C++程序 (使用 arm-linux-gcc 交叉编译环境)

这个其实就是个人的一个小小的兴趣,用C/C++写一个小程序放在Android的系统中,然后用Java写一个Android的UI程序来调用这个C/C++的程序。这里总结了实现这个功能的一些步骤和遇到的问...
  • wangzhiyu1980
  • wangzhiyu1980
  • 2013年11月28日 20:39
  • 16664

学习记录:linux下将C程序编译为汇编程序进行分析

在linux下编译x.c程序时,可以将其编译为汇编程序而不链接,这样就可以看到编译后的汇编代码。 gcc对c程序的编译分为如下四个步骤:process、compile、assemble、link,分...
  • yitongfly
  • yitongfly
  • 2015年06月03日 13:06
  • 753

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

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

linux 交叉编译的HelloWorld【1】

日期:2016-04-02        起因刚好最近三天假期可以玩玩Linux。就是将一个fedora下文件发送到Arm9的下的系统下进行运行。也许会问为何不直接用Arm9上的系统来编译呢,实际上板...
  • zhjmyx
  • zhjmyx
  • 2016年04月02日 20:27
  • 3070
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在linux中把汇编或c程序交叉编译成二进制文件烧录开发板过程详解
举报原因:
原因补充:

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