如何在Ubuntu上搭建编译环境:修订间差异

来自Bouffalo Lab Docs
跳转到导航 跳转到搜索
武楷轩留言 | 贡献
无编辑摘要
无编辑摘要
 
(未显示2个用户的2个中间版本)
第1行: 第1行:
= 准备环境 =
== 安装编译工具链 ==
更新源:<syntaxhighlight lang="bash">
T-Head GCC Toolchain的地址:https://github.com/bouffalolab/toolchain_gcc_t-head_linux
$ sudo apt update
 
使用Git clone下载T-Head GCC Toolchain: <code>git clone git@github.com:bouffalolab/toolchain_gcc_t-head_linux.git</code>
 
假设clone到了<code>/data/toolchain_gcc_t-head_linux</code>目录下:
 
<syntaxhighlight lang="bash">
jenkins@debian:/data/toolchain_gcc_t-head_linux$ ls -l
total 28
drwxr-xr-x 2 jenkins jenkins 4096 Dec 24  2022 bin
drwxr-xr-x 3 jenkins jenkins 4096 Dec 24  2022 include
drwxr-xr-x 3 jenkins jenkins 4096 Dec 24  2022 lib
drwxr-xr-x 2 jenkins jenkins 4096 Dec 24  2022 lib64
drwxr-xr-x 3 jenkins jenkins 4096 Dec 24  2022 libexec
drwxr-xr-x 5 jenkins jenkins 4096 Dec 24  2022 riscv64-unknown-elf
drwxr-xr-x 7 jenkins jenkins 4096 Dec 24  2022 share
</syntaxhighlight>
 
然后把<code>/data/toolchain_gcc_t-head_linux/bin</code>路径加入到系统PATH环境变量中,假设你使用的是bash,则在<code>~/.bashrc</code>文件最后一行添加:
 
<syntaxhighlight lang="bash">
... bashrc origin data ...
 
# add t-head gcc toolchain to PATH
export PATH=/data/toolchain_gcc_t-head_linux/bin:$PATH
</syntaxhighlight>
 
然后在当前终端下执行<code>source ~/.bashrc</code>使PATH环境变量生效,然后执行<code>riscv64-unknown-elf-gcc -v</code>应该可以看到GCC运行的打印。
 
<syntaxhighlight lang="bash">
jenkins@debian:/data/toolchain_gcc_t-head_linux/bin$ source ~/.bashrc
 
jenkins@debian:/data/toolchain_gcc_t-head_linux/bin$ echo $PATH
/data/toolchain_gcc_t-head_linux/bin:/home/jenkins/.local/bin:/data/toolchain_gcc_t-head_linux/bin:/data/jenkins_tools:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
 
jenkins@debian:/data/toolchain_gcc_t-head_linux/bin$ riscv64-unknown-elf-gcc -v
Using built-in specs.
COLLECT_GCC=riscv64-unknown-elf-gcc
COLLECT_LTO_WRAPPER=/data/toolchain_gcc_t-head_linux/bin/../libexec/gcc/riscv64-unknown-elf/10.2.0/lto-wrapper
Target: riscv64-unknown-elf
Configured with: /mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/./source/riscv/riscv-gcc/configure --target=riscv64-unknown-elf --with-gmp=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-mpfr=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-mpc=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-libexpat-prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-libmpfr-prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-pkgversion='Xuantie-900 elf newlib gcc Toolchain V2.6.1 B-20220906' CXXFLAGS='-g -O2 -DTHEAD_VERSION_NUMBER=2.6.1 ' --enable-libgcctf --prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1 --disable-shared --enable-threads=posix --enable-languages=c,c++ --with-system-zlib --enable-tls --with-newlib --with-sysroot=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/riscv64-unknown-elf --with-native-system-header-dir=/include --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libgomp --disable-nls --disable-tm-clone-registry --src=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/./source/riscv/riscv-gcc --enable-multilib --with-abi=lp64d --with-arch=rv64gcxthead 'CFLAGS_FOR_TARGET=-Os  -mcmodel=medany' 'CXXFLAGS_FOR_TARGET=-Os  -mcmodel=medany'
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.2.0 (Xuantie-900 elf newlib gcc Toolchain V2.6.1 B-20220906)
</syntaxhighlight>
 


</syntaxhighlight>Bouffalo SDK需要CMake工具:
== 安装环境依赖 ==
Bouffalo SDK Build依赖CMake工具,在Ubuntu下可以直接使用APT工具安装:


<syntaxhighlight lang=shell>
<syntaxhighlight lang="bash">
$ sudo apt update
$ sudo apt install cmake
$ sudo apt install cmake
</syntaxhighlight>下载编译工具链:<syntaxhighlight lang="bash">
</syntaxhighlight>
git clone "https://github.com/bouffalolab/bouffalo_sdk”
</syntaxhighlight>如果你使用clangd来作为LSP实现工具,则下载 bear和clangd :<syntaxhighlight lang="bash">$ sudo apt install clangd
$ sudo apt install bear
#该工具和make一起使用时会生成 .json文件,该文件记录各种编译参数路径等信息,用于LSP通信使用</syntaxhighlight>执行时则执行 根据手册执行对应参数,在前面加上一个 bear即可,例如:<syntaxhighlight lang="bash">
bear -- make clean && make CHIP=bl616 BOARD=bl616dk
</syntaxhighlight>如果你选择使用VScode,那么只需要下载对应插件即可。


也可以在VScode中配置为clangd。
CMake安装成功之后,可以进入到Bouffalo SDK目录下的<code>examples/helloworld</code>,执行<code>make</code>即可看到编译的日志。

2025年7月16日 (三) 04:41的最新版本

安装编译工具链

T-Head GCC Toolchain的地址:https://github.com/bouffalolab/toolchain_gcc_t-head_linux

使用Git clone下载T-Head GCC Toolchain: git clone git@github.com:bouffalolab/toolchain_gcc_t-head_linux.git

假设clone到了/data/toolchain_gcc_t-head_linux目录下:

jenkins@debian:/data/toolchain_gcc_t-head_linux$ ls -l
total 28
drwxr-xr-x 2 jenkins jenkins 4096 Dec 24  2022 bin
drwxr-xr-x 3 jenkins jenkins 4096 Dec 24  2022 include
drwxr-xr-x 3 jenkins jenkins 4096 Dec 24  2022 lib
drwxr-xr-x 2 jenkins jenkins 4096 Dec 24  2022 lib64
drwxr-xr-x 3 jenkins jenkins 4096 Dec 24  2022 libexec
drwxr-xr-x 5 jenkins jenkins 4096 Dec 24  2022 riscv64-unknown-elf
drwxr-xr-x 7 jenkins jenkins 4096 Dec 24  2022 share

然后把/data/toolchain_gcc_t-head_linux/bin路径加入到系统PATH环境变量中,假设你使用的是bash,则在~/.bashrc文件最后一行添加:

... bashrc origin data ...

# add t-head gcc toolchain to PATH
export PATH=/data/toolchain_gcc_t-head_linux/bin:$PATH

然后在当前终端下执行source ~/.bashrc使PATH环境变量生效,然后执行riscv64-unknown-elf-gcc -v应该可以看到GCC运行的打印。

jenkins@debian:/data/toolchain_gcc_t-head_linux/bin$ source ~/.bashrc

jenkins@debian:/data/toolchain_gcc_t-head_linux/bin$ echo $PATH
/data/toolchain_gcc_t-head_linux/bin:/home/jenkins/.local/bin:/data/toolchain_gcc_t-head_linux/bin:/data/jenkins_tools:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

jenkins@debian:/data/toolchain_gcc_t-head_linux/bin$ riscv64-unknown-elf-gcc -v
Using built-in specs.
COLLECT_GCC=riscv64-unknown-elf-gcc
COLLECT_LTO_WRAPPER=/data/toolchain_gcc_t-head_linux/bin/../libexec/gcc/riscv64-unknown-elf/10.2.0/lto-wrapper
Target: riscv64-unknown-elf
Configured with: /mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/./source/riscv/riscv-gcc/configure --target=riscv64-unknown-elf --with-gmp=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-mpfr=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-mpc=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-libexpat-prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-libmpfr-prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/build-Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/lib-for-gcc-x86_64-linux --with-pkgversion='Xuantie-900 elf newlib gcc Toolchain V2.6.1 B-20220906' CXXFLAGS='-g -O2 -DTHEAD_VERSION_NUMBER=2.6.1 ' --enable-libgcctf --prefix=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1 --disable-shared --enable-threads=posix --enable-languages=c,c++ --with-system-zlib --enable-tls --with-newlib --with-sysroot=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/build-gcc-riscv64-unknown-elf/Xuantie-900-gcc-elf-newlib-x86_64-V2.6.1/riscv64-unknown-elf --with-native-system-header-dir=/include --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libgomp --disable-nls --disable-tm-clone-registry --src=/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv/./source/riscv/riscv-gcc --enable-multilib --with-abi=lp64d --with-arch=rv64gcxthead 'CFLAGS_FOR_TARGET=-Os   -mcmodel=medany' 'CXXFLAGS_FOR_TARGET=-Os   -mcmodel=medany'
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 10.2.0 (Xuantie-900 elf newlib gcc Toolchain V2.6.1 B-20220906)


安装环境依赖

Bouffalo SDK Build依赖CMake工具,在Ubuntu下可以直接使用APT工具安装:

$ sudo apt update
$ sudo apt install cmake

CMake安装成功之后,可以进入到Bouffalo SDK目录下的examples/helloworld,执行make即可看到编译的日志。