1、下載
$ sudo apt-get install git wget build-essential
$ git clone https://github.com/riscv-collab/riscv-gnu-toolchain
$ git checkout 2023.06.02
注意上面 clone 的倉(cāng)庫(kù),我們稱(chēng)其為構(gòu)建腳本倉(cāng)庫(kù),其并不包含 gcc 等工具源碼,這些源碼以 git 的 submodule 的形式作為子倉(cāng)庫(kù)的內(nèi)容發(fā)布,所以需要繼續(xù)更新子倉(cāng)庫(kù)。
$ git submodule update --init --recursive
Submodule 'binutils' (https://sourceware.org/git/binutils-gdb.git) registered for path 'binutils'
Submodule 'dejagnu' (https://git.savannah.gnu.org/git/dejagnu.git) registered for path 'dejagnu'
Submodule 'gcc' (https://gcc.gnu.org/git/gcc.git) registered for path 'gcc'
Submodule 'gdb' (https://sourceware.org/git/binutils-gdb.git) registered for path 'gdb'
Submodule 'glibc' (https://sourceware.org/git/glibc.git) registered for path制作交叉工具鏈 riscv-gnu-toolchain
注意:
使用上訴命令通過(guò) submodule 方式下載困難的話,可以手工通過(guò)下載并切換到指定的分支。如 binutils 可通過(guò)以下方式下載并切換到指定的分支,地址和分支可以在根目錄下的.gitignore
文件中獲取。
$ git clone https://sourceware.org/git/binutils-gdb.git binutils
$ git checkout binutils-2_40-branch
2、編譯
1. 依賴安裝
$ sudo apt-get install -y autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev
2. 編譯
riscv-gnu-toolchain 支持通過(guò)不同的編譯命令和參數(shù),生成不同版本的 toolchain。
分別支持:
- 32bit 和 64bit
- Newlib、glibc 和 musl 版本
- 編譯 Newlib 版本:使用
make
命令
$ ./configure --prefix=${PWD}/riscv-newlib
$ make -j8
編譯完成后,在 ${PWD}/riscv-newlib/bin
目錄下生成 riscv64-unknown-elf-gcc
- 編譯 glibc 版本:使用
make linx
命令
$ ./configure --prefix=${PWD}/riscv64-linux
$ make linux -j8
默認(rèn)編譯的版本為 RV64GC (64-bit)
, 需要編譯 RV32GC (32bit)
版本可以使用以下命令編譯
$ ./configure --prefix=${PWD}/riscv32-linux --with-arch=rv32gc --with-abi=ilp32d
$ make linux -j8
- 支持的架構(gòu)是rv32i或rv64i加上標(biāo)準(zhǔn)擴(kuò)展
a/m/f/d/g
。 - 支持的ABI是ilp32(32位軟浮點(diǎn)),ilp32d(32位硬浮點(diǎn)),ilp32f(32位,在寄存器中使用單精度,在內(nèi)存中使用雙精度,僅限特定用途),lp64,lp64f,lp64d(相同,但使用64位長(zhǎng)和指針)。
- 編譯 musl libc 版本:使用
make musl
命令
$ ./configure --prefix=${PWD}/riscv64-musl
$ make musl -j8
- 同時(shí)編譯支持 32bit 和 64bit 版本
$ ./configure --prefix=${PWD}/riscv --enable-multilib
然后使用 make
或 make linux
或 make musl
編譯對(duì)應(yīng)的版本。
注:
musl 只支持 64bit 系統(tǒng)。
更多的配置信息可以通過(guò) ./configure --help
查看。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-682401.html
3、運(yùn)行
測(cè)試 toolchain 是否安裝成功文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-682401.html
$ riscv64-unknown-linux-gnu-gcc -v
到了這里,關(guān)于RISC-V交叉工具鏈riscv-gnu-toolchain編譯的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!