RISC-V GNU Toolchain介绍

RISC-V GNU Toolchain介绍

Rriscv-gnu-toolchain与普通gnu-toolchain基本相同,支持riscv32/64位指令集架构

* 一个安装脚本

在这里插入图片描述
github上红色括号内的脚本可以安装GNU工具链,不过要说明的是默认安装的是64bit的工具库,如果需要安装32bit的可能还需要自己安装。

1、整个工具链包括以下内容:

-GCC(GNU C Compiler):通过“预处理-编译-汇编-链接”,将.c文件转换为目标机器上的可执行文件。
-C运行库:包括glibic, musl,newlib,为C标准库提供函数实现支持,可以根据需求进行自定义修改。
-Binutils: 一组二进制程序处理工具,包括ar(静态库处理),as(汇编器),ld(链接器)等
-GDB: 用于进行项目调试,程序运行检查
-DejaGnu: 程序测试框架,为所有测试提供一个前端支持。

2、编译器处理流程

预处理:对文件的注释、宏定义、头文件引用信息进行处理
编译: 对预处理后生成的文件进行词法分析、语法分析、语义分析、优化,生成汇编代码
汇编:对编译后生成的汇编代码进行处理,将汇编代码翻译成目标处理器可以识别的机器指令
链接:将汇编后生成的文件添加执行需要的信息,对程序需要的库进行导入处理,生成ELF文件
在这里插入图片描述
C程序预处理后会生成.i文件
编译后生成.s文件
汇编后生成.o文件
链接操作后生成.elf文件

3、静态链接与动态链接

静态链接:直接将静态库加入到可执行文件中
动态链接:只加入描述信息,程序执行时,再将动态库加载到内存中。

4、本地编译与交叉编译

本地编译:编译生成本地可以执行的程序
交叉编译:编译生成目标机器可以执行的程序

5、newlib简介:

newlib是由redhat社区维护的一个C运行库,与glibc相比,其最大的特点是代码体积小,可移植性强,特别适合嵌入式开发环境。
例如newlib重写了printf、scanf、malloc函数,减少调用开销,在编译库函数时,默认开启-Os选项对代码体积进行压缩优化。

6、binutils工具简介

addr2line:将程序地址转化为所在源程序文件的代码行
as:利用汇编指令与处理器指令对照表,将汇编指令转换为目标处理器指令
ld:链接生成可执行文件
ar:生成静态链接库
ldd:查看一个可执行程序需要的依赖库
size:查看一个可执行文件的各部分大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值