1、交叉编译工具

arm-linux-gcc

arm-linux-addr2line

arm-linux-objcopy

arm-linux-readelf

arm-linux-ar

arm-linux-ld

arm-linux-objdump

arm-linux-size

arm-linux-nm

arm-linux-strip

arm-linux-cc

arm-linux-gprof

arm-linux-c++filt

arm-linux-as

arm-linux-cpp

arm-linux-gccbug

arm-linux-ldd

arm-linux-populate

arm-linux-strings

arm-linux-c++

arm-linux-g++

arm-linux-gcov

arm-linux-ranlib

如何查看各交叉编译工具的帮助信息:

例如查看arm-linux-gcc的帮助信息:

$ arm-linux-gcc --help

常用的交叉编译工具:

1.1 交叉编译器 arm-linux-gcc

    和X86平台下的gcc的基本用法用法是完全一样的;不同之处:标准的gcc所引用的头文件路径为 /usr/include/stdio.h,arm-linux-gcc所引用的头文件路径为其安装路径下,如 /usr/local/armtools/4.5.1/bin/..

1.2 交叉链接器 arm-linux-ld

arm-linux-ld命令是ARM平台下的交叉链接器,把程序链接成可以在ARM平台下运行。

    用法: arm-linux-ld -Tled.lds led.o -o led.elf

把led.o链接成led.elf文件;led.lds是链接器脚本,

1.3 交叉elf文件工具 arm-linux-readelf

查看.elf格式文件: arm-linux-readelf -a led.elf

-a 参数是查看.elf文件的所有内容

注意:编译的程序运行不了有两个原因:一个是要看运行平台对不对,第二个是要看处理器的大小端跟编译的程序的大小端是否对应,可以使用arm-linux-readelf -a xxx.elf 命令查看编译出来的程序大小端情况和程序运行平台。

如下图所示,编译后的程序只能运行在小端(little endian)的处理器上,其运行平台Machine是ARM。绝大多数ARM处理器都是小端的。

查看程序运行平台还可以使用file xxx (xxx为编译后可执行文件) 命令查看。

如一个应用程序不能执行,排除了运行平台和大小端的情况后,还有可能是库不对。

使用arm-linux-readelf -d xxx (xxx为编译后可执行文件)查看运行库;如hello程序运行库为libc.so.6,如果开发板上没有这个库,程序是运行不了的。

1.4 交叉反汇编器 arm-linux-objdump

把hello.c文件编译成hello可执行文件:arm-linux-gcc hello.c -o hello

用法arm-linux -objdump -D -S hello >dump

把hello可执行文件反汇编后输入保存到dump文件中。

-D -S 是反汇编参数,>dump 把hello反汇编后的内容保存到dump文件中

注意: 在编译hello时没有使用-g参数,反汇编后的代码和原来C代码对应不起来。我们可以在编译hello时使用-g参数:

先把hello.c文件编译成hello可执行文件:arm-linux-gcc -g hello.c -o hello;运行arm-linux -objdump -D -S hello >dump命令,打开dump文件可以看到

1.5文件格式转换器 arm-linux-objcopy

使用arm-linux-objcopy命令可以把ELF格式的文件转换成二进制文件。

文件格式转换的原因:elf格式的文件不能直接在ARM上运行(ARM只能运行二进制格式的文件);

用法:arm-linux-objcopy -O binary led.elf led.bin

把led.elf格式的文件转换成led.bin二进制文件。

1.6库管理器arm-linux-ar

arm-elf-ar将多个可重定位的目标模块归档为一个函数库文件。采用函数库文件,应用程序能够从该文件中自动装载要参考的函数模块,同时将应用程序中频繁调用的函数放入函数库文件中,易于应用程序的开发管理。arm-elf-ar支持ELF格式的函数库文件.

交叉编译工具链的使用相关推荐

  1. 自己动手安装ARM交叉编译工具链

    一,首先说一下在linux中安装软件的特点: 相比windows下安装要稍显复杂,linux中安装一般有以下几种方法: 1.在线安装,譬如ubuntu中使用apt-get install vim 来安 ...

  2. arm-linux交叉编译工具链的制作(基于S3C2440)【转】

    本文转载自:http://eric-gao.iteye.com/blog/2160622 制作arm-linux交叉编译工具链一般通过crosstool工具或者crosstool-NG,前者使用方便, ...

  3. linux centos7 使用 crosstool-ng 构建 交叉编译 工具链 即构建各cpu架构平台的gcc编译器

    简介 crosstool-ng,全称是crosstool Next Generation,即下一代crosstool.crosstool是个交叉编译器的制作工具,但是做的不够好,于是有人(Yann E ...

  4. 使用 Android NDK 的交叉编译工具链移植 C/C++ 项目到安卓平台

    什么是 NDK? Android NDK 是一套可以让开发者在安卓应用开发中使用 C/C++ 实现特定模块的工具集,不是所有应用都需要用到,但是正确地使用可以有效提高应用运行效率和安全性. 为什么要在 ...

  5. arm-buildroot-linux-,buildroot构建交叉编译工具链,根文件系统

    支持多种处理器,arch,avr32,mips,x86等等,在arch/目录可查看. buildroot可使用make menuconfig进行配置,选择需要编译到目标文件系统的包,相关的配置文件在c ...

  6. 如何添加交叉编译工具链(toolchain)到环境变量?(--sysroot路径)(新:ubuntu交叉编译工具链环境变量的配置)

    文章目录 查看当前环境变量 `echo $PATH` 添加环境变量 --sysroot 新:ubuntu交叉编译工具链环境变量的配置(20220105) 查看当前环境变量 echo $PATH [ro ...

  7. Arm Linux 交叉编译(交叉编译是什么?CROSS_COMPILE)(交叉编译工具链【待更】)

    文章目录 交叉编译 1.编译 2.本地编译 3.交叉编译 交叉编译工具链 交叉编译 在嵌入式系统开发中,经常会听到一个词:交叉编译.到底什么是"交叉编译"呢?为什么要使用" ...

  8. linux top交叉编译_ARM Linux交叉编译工具链的制作

    本次是在VMWare虚拟机里安装了CentOS5.2操作系统,并在上面编译自己的ARM交叉编译工具链,下面是相应的步骤: 首先下载crosstool0.43源码包(crosstool-0.43.tar ...

  9. 制定交叉编译工具_配置交叉编译工具链-嵌入式Linux

    注意:使用我们提供的Ubuntu映象文件时,请按照我们的目录结构,手动设置交叉编译工具链以及编译的架构环境变量配置,(建议配置为永久生效),这里我们提供了两种交叉编译工具链,分别是buildroot构 ...

  10. 交叉编译及树莓派(或其他平台)交叉编译工具链的安装

    交叉编译是什么: 交叉编译是一个行为,是在一个平台上生成另一个平台上的可执行代码. 比如:我们在windows上面编写C51的代码,并编译成可执行代码,如xx.hex,是在C51上面运行不是在wind ...

最新文章

  1. error LNK2001: 无法解析的外部符号 public: static int Pe...
  2. python3 库pandas写入csv格式文件出现中文乱码问题解决方法
  3. boost::lexical_cast
  4. 居家洁士扫地机器人_掌握核心技术扫地机器人品牌推荐,由利和石头扫地机器人哪个牌子好?...
  5. 云栖社区云栖号(团队博客)攻略【2018版】
  6. hdu 2037 今年暑假不AC (java)
  7. 服务器能进系统滴滴响,ibm x226服务器开机嘀嘀嘀响三遍就没反应了。是怎么回事?内存吗?...
  8. Cocos2d-x场景(Scene)详解
  9. 用图形工具管理Server Core上的账号和组图文教程
  10. ThinkPHP5学习笔记(6)请求和响应
  11. CSND怎样获得积分
  12. 如何在Python中使用生成器(Generate)和yield语句
  13. Python-支持向量机 决策边界 最大化margin、使用多项式特征和核函数、高斯核函数、超参数 γ、SVM解决回归问题
  14. [论文] Feature Squeezing:Detecting Adversarial Examples in Deep Neural Networks
  15. 2021-11-08FGUI 使用
  16. python安装第三方库的方法
  17. Ps 初学者教程「34」如何使用魔棒工具选择单独的区域?
  18. Microsoft Visusl C++2010运行程序时,调试弹出黑框自动闪退无法看见运行结果的解决方法
  19. 5G关键技术,D2D通信-ielab
  20. 我是如何用微信抢红包一年抢了一千万的

热门文章

  1. Qt工作笔记-QVector下标访问和迭代访问效率实践(大跌狗眼)
  2. bat 修改txt_多工作簿数据合并,还在复制粘贴就out了,同事用bat文件一秒搞定...
  3. mysql 5.7.17 64位_Windows(x86,64bit)升级MySQL 5.7.17免安装版的详细教程
  4. 统考计算机和英语百度网盘,《计算机专业英语》在线考试系统
  5. 中国电子协会考评中心_中国电子学会考评中心和CPA青少年编程能力等级测评有什么不同?...
  6. 59s计时器C语言程序步骤详解,51单片机00-59秒计时器 0-59s Timer
  7. flashpaper打印机没有被正确安装_条码打印机有哪些常见问题
  8. 3-2:HTTP协议之URI(URL)和HTTP基本概念及其特征
  9. Qt之表单布局(QFormLayout)
  10. 使用foreach循环遍历集合元素