Linux驱动学习:工具链

本文介绍了如何使用GNU工具链编译Bootloader、内核和应用程序,包括使用crosstool-ng创建交叉工具链,推荐了第三方如SourceryCodebench和Linaro提供的预编译版本,特别关注了ARM架构的浮点处理ABI选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


以下基于宋宝华老师的《Linux设备驱动开发详解》

GNU

通常使用GNU工具链编译Bootloader、内核和应用程序

  1. GCChttps://gcc.gnu.org/
  2. GDBhttps://www.gnu.org/software/gdb
  3. glibchttps://www.gnu.org/software/libc
  4. Blinutilshttps://www.gnu.org/software/binutils

建立交叉工具链

一般通过类似crosstool-ng这样的工具来做
crosstool-nghttp://www.crosstool-ng.org/

用法

下载编译并安装后,运行ct-ng menuconfig进行配置即可

第三方免费开源、已编译好的

  1. http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/:针对ARMMIPS、高通HexagonAltera Nios IIIntelAMD64等处理器的工具链
  2. http://www.linaro.org/downloads:针对ARM的工具链(趋向)

一些包含

一个ARM Linux工具链包含arm-linux-gnueabihf-gcc(后续工具省略了前缀)stripgccobjeumpldgprofnmreadelfaddr2line

  1. strip:可以删除可执行文件中的符号表和调试信息等来实现缩减程序体积的目的
  2. gprof:在编译过程中在函数入口处插入计数器以收集每个函数的被调用情况和被调用次数,检查程序计数器并在分析时找出与程序计数器对应的函数来统计函数的占用时间
  3. objeump:反汇编工具
  4. nm:显示关于对象文件、可执行文件以及对象文件库里的符号细腻些
  5. 前缀中的hf表示该工具链是完全的硬浮点
    1. Linux的浮点处理可以采用如下
      1. 具体的ABI(应用程序二进制接口):通过-mfloat-abi=指定。
      2. 完全软浮点(soft):整型寄存器
      3. 与软浮点兼容,但是使用FPU硬件的softfp(softfp):整型寄存器只用来传递函数参数
      4. 完全硬浮点(hard):直接使用FPU的寄存器传递参数
      5. 一个含有浮点运算的程序,如果使用hard ABI会比softfp ABI
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值