交叉工具链
2015-08-23 21:15
225 查看
对于源文件hello.c
使用gcc编译:gcc -static hello.c -o hello,得到的hello可在虚拟机中正常运行,但将这个hello复制到开发板的linux系统中,hello无法正确运行;
使用arm-linux-gcc编译:arm-linux-gcc -static hello.c -o hello,得到的hello可在开发板的linux系统中正常运行。
交叉开发:所谓交叉开发是指先在一台通用PC上进行软件的编辑、编译与连接,然后下载到嵌入式设备中运行调试的开发过程。通用PC成为宿主机,嵌入式设备成为目标机。
常用的交叉工具:
交叉编译器:arm-linux-gcc
交叉链接器:arm-linux-ld
交叉转换器:arm-linux-objcopy
交叉ELF文件工具:arm-linux-readelf
交叉反汇编器:arm-linux-objdump
交叉编译器arm-linux-gcc寻找头文件路径与gcc寻找头文件路径不同。
gcc寻找头文件路径为:/usr/include/
交叉链接器:可以将多个只进行了编译但没有进行链接的文件链接成一个可执行文件。
arm-linux-ld -Tled.lds -o led.elf led.o main.o //将led.o和main.o链接成led.elf
交叉ELF文件工具
arm-linux-readelf -a led.elf //查看led.elf的所有信息
arm-linux-readelf -d hello
交叉反汇编器:将可执行文件变回汇编文件
arm-linux-objdump -D -S hello >dump
然后可通过查看文件dump 查看汇编代码
交叉转换器:能够将elf文件转换为二进制文件
能够在arm处理器中运行的一定是二进制文件,所以需要将可执行文件转换为二进制文件
arm-linux-objcopy -O binary led.elf led.bin
无论是arm-linux-gcc,还是arm-linux-ld产生的输出文件都是elf格式文件,都不是二进制文件。之前所说的使用arm-linux-gcc编译得到的hello文件可在开发板上运行是指hello可在开发板的linux系统中运行,此时linux系统会自动将elf文件转换为二进制文件再执行。
使用gcc编译:gcc -static hello.c -o hello,得到的hello可在虚拟机中正常运行,但将这个hello复制到开发板的linux系统中,hello无法正确运行;
使用arm-linux-gcc编译:arm-linux-gcc -static hello.c -o hello,得到的hello可在开发板的linux系统中正常运行。
交叉开发:所谓交叉开发是指先在一台通用PC上进行软件的编辑、编译与连接,然后下载到嵌入式设备中运行调试的开发过程。通用PC成为宿主机,嵌入式设备成为目标机。
常用的交叉工具:
交叉编译器:arm-linux-gcc
交叉链接器:arm-linux-ld
交叉转换器:arm-linux-objcopy
交叉ELF文件工具:arm-linux-readelf
交叉反汇编器:arm-linux-objdump
交叉编译器arm-linux-gcc寻找头文件路径与gcc寻找头文件路径不同。
gcc寻找头文件路径为:/usr/include/
交叉链接器:可以将多个只进行了编译但没有进行链接的文件链接成一个可执行文件。
arm-linux-ld -Tled.lds -o led.elf led.o main.o //将led.o和main.o链接成led.elf
交叉ELF文件工具
arm-linux-readelf -a led.elf //查看led.elf的所有信息
arm-linux-readelf -d hello
交叉反汇编器:将可执行文件变回汇编文件
arm-linux-objdump -D -S hello >dump
然后可通过查看文件dump 查看汇编代码
交叉转换器:能够将elf文件转换为二进制文件
能够在arm处理器中运行的一定是二进制文件,所以需要将可执行文件转换为二进制文件
arm-linux-objcopy -O binary led.elf led.bin
无论是arm-linux-gcc,还是arm-linux-ld产生的输出文件都是elf格式文件,都不是二进制文件。之前所说的使用arm-linux-gcc编译得到的hello文件可在开发板上运行是指hello可在开发板的linux系统中运行,此时linux系统会自动将elf文件转换为二进制文件再执行。
相关文章推荐
- SQL Server之存储过程基础知识
- 第十三章 动画引擎
- 用python进行数据预处理,过滤特殊符号,英文和数字。(适用于中文分词)
- Android扫描sd卡和系统文件
- Android MediaScanner
- postgresql创建用户
- Binary Tree Postorder Traversal——重要的基本的算法
- var_export 与 var_dump的不同
- AutoCAD2014打开闪退的解决办法
- 分段压缩
- python笔记 4
- Ubuntu学习之Linux文件和目录管理
- HDU1024 Max Sum Plus Plus(DP动态规划 最大子串和增强版)
- 九度oj 1136
- [LeetCode] Sort Colors(!!两个指针)
- hdu 1385 Minimum Transport Cost(最短路,floyd打印字典序路径)
- 裸机开发前准备
- 基于iOS的OpenCV之人脸检测(二)
- CentOS6.5实现PXE+Kickstart无人值守安装操作系统
- hdu 5420 Victor and Proposition 线段树建图+强连通分量