交叉编译基础知识总结(1)

本文介绍了ARM交叉编译的基本概念,即在X86平台编译能在ARM平台上运行的程序。主要内容包括交叉编译工具链的组成(binutils、gcc和glibc)以及常用的交叉编译工具,如GCC的编译、汇编、链接等步骤,并详细解析了GCC的编译过程和参数。此外,还列举了查看和分析ELF文件、制作静态库、查看依赖动态库等开发过程中常用的工具和命令。
摘要由CSDN通过智能技术生成

ARM交叉编译工具链

交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台(X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行,虽然两个平台用的都是Linux系统。

交叉编译工具链是一个由编译器连接器解释器组成的综合开发环境,交叉编译工具链主要由binutils、gcc和glibc三个部分组成。

免费版目前有三大主流工具商提供,第一是GNU(提供源码,自行编译制作),第二是 CodeSourcery,第三是Linaro。

(以上摘自:http://www.veryarm.com/cross-tools)

常用工具

下面列出的都是开发过程中编译,调试常用的工具。以GNU GCC 工具链为例讲解,其他的交叉编译工具链,一样存在下面的工具,只是名字前应该加上$(CROSS_COMPILE),形如:$(CROSS_COMPILE)gcc, $(CROSS_COMPILE)objdump

[1] 编译

    gcc hello.c

[2] 汇编

    ar hello.s -o hello.o

[3] 链接

    ld hello.o -o hello

[4] 格式转换

    objcopy --gap-fill=0xff(填充1) -O binary(目标文件格式) -S hello(ELF格式的可执行文件) hello.bin

[5] 反汇编

    objdump -D hello > hello.dis

[6] 查看文件格式

    file hello

[7] 读取ELF文件中的符号表

    nm hel

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值