riscv |
您所在的位置:网站首页 › xilinx交叉编译工具链 › riscv |
reference: 利用码云镜像快速拉取riscv-gnu-toolchain工具链 RISC-V GNU编译环境搭建与运行实践 riscv各种版本gcc工具链编译与安装 1.拉取riscv-gnu-toolchain源码riscv-gnu-toolchain是riscv的gcc交叉编译工具链 github地址为:https://github.com/riscv/riscv-gnu-toolchain/tree/master 正常拉取的步骤为: git clone [email protected]:riscv/riscv-gnu-toolchain.git cd riscv-gnu-toolchain git submodule update --init --recursive但由于外网原因,往往会卡在拉取子模块的阶段(有时有梯子也挺慢的)。 这些子模块包括: riscv-qemu riscv-newlib(100MB) riscv-binutils(394MB) riscv-gdb(394MB) riscv-dejagnu(3MB) riscv-glibc(155MB) riscv-gcc (1.3GB) 为了解决这个问题,可以拉取码云上的riscv-gnu-toolchain镜像。 码云地址为:https://gitee.com/mirrors/riscv-gnu-toolchain git clone https://gitee.com/mirrors/riscv-gnu-toolchain cd riscv-gnu-toolchain然而码云上的子模块的地址仍然为github的地址,所以需要分别拉取其子模块在码云上的镜像。(虽然挺麻烦的,但总的来说还是挺快的) riscv-newlib:https://gitee.com/mirrors/riscv-newlib riscv-binutils:https://gitee.com/mirrors/riscv-binutils-gdb riscv-gdb:https://gitee.com/mirrors/riscv-binutils-gdb(riscv-gdb和riscv-binutils为同一个仓库下的不同分支) riscv-dejagnu:https://gitee.com/mirrors/riscv-dejagnu riscv-glibc:https://gitee.com/mirrors/riscv-glibc riscv-gcc:https://gitee.com/mirrors/riscv-gcc 需要注意的是,riscv-gnu-toolchain工具链下子模块拉取的不都是其主分支,我们可以通过其最近的一次commit来判断是那个分支,下图红框处: 这里我直接列出其子模块对应的分支:(工具链可能会更新,要使用最新版本大家自行切换具体分支) riscv-binutils:riscv-binutils-2.35 riscv-dejagnu:master riscv-gcc:riscv-gcc-10.2.0 riscv-gdb:fsf-gdb-10.1-with-sim riscv-glibc:riscv-glibc-2.29 riscv-newlib:master git clone https://gitee.com/mirrors/riscv-dejagnu安装依赖 sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev \ gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev
编译riscv-gnu-toolchain riscv-gnu-toolchain 工具链分elf-gcc,linux-gnu-gcc两个版本,以及他们对应的32位和64位版本。两个的主要区别在于: riscv32-unknown-elf-gcc,riscv64-unknown-elf-gcc:使用的riscv-newlib库(面向嵌入式的C库),而且只支持静态链接,不支持动态链接。 riscv32-unknown-linux-gnu-gcc,riscv64-unknown-linux-gnu-gcc:使用的是glibc标准库,支持动态链接。 个人认为从名字上便可以区分两者的使用场景,如果是编译简单,较小的elf程序,使用elf-gcc版本即可,如果编译比较大的程序或者需要动态库(比如编译linux,或opencv库等),推荐使用linux-gnu-gcc版本。 以riscv32为例: 观察其生成的makefile文件: make正常的效果如下图, 如果卡在mkdir这步,或者是出现git下载riscv-*失败,可能因素:1.riscv-*分支版本过旧; 2.环境依赖需要更新;3.需要耐心等待;
查看其配置信息: 编译运行测试下: https://www.qemu.org/docs/master/ https://www.qemu.org/download/ 首先安装好依赖: sudo apt-get install libglib2.0-dev ninja-build build-essential zlib1g-dev pkg-config libglib2.0-dev \ binutils-dev libboost-all-dev autoconf libtool libssl-dev libpixman-1-dev libpython-dev \ virtualenv libmount-dev libpixman-1-dev然后按步骤安装: wget https://download.qemu.org/qemu-6.2.0.tar.xz tar xvJf qemu-6.2.0.tar.xz cd qemu-6.2.0 mkdir build cd build ../configure make -j4 #wait...回到helloworld路径下,使用gcc编译c代码,生成的可执行文件可以被qemu中编译出来的qemu-riscv32执行,说明工具链和Qemu均安装成功: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |