本文來源電子發(fā)燒友社區(qū),作者:許浩然, 帖子地址:https://bbs.elecfans.com/jishu_2028169_1_1.html
1、首先說明下我的硬件環(huán)境: 筆記本電腦(P570WM),雙系統(tǒng)(Win7+Ubuntu 20.04)。

2、其次我認(rèn)為整個(gè)開發(fā)環(huán)境分為兩個(gè)部分: 開發(fā)-編譯環(huán)境(Ubuntu 20.04);
燒錄環(huán)境(Win 7);
3、參考文獻(xiàn):
鴻蒙官方網(wǎng)站相關(guān)資料,鏈接如下:https://device.harmonyos.com/cn/docs/start/introduce/oem_quickstart_3861_build-0000001054781998。
4、構(gòu)建開發(fā)-編譯環(huán)境
如前文所說,本次環(huán)境搭建為一臺(tái)電腦上的雙系統(tǒng)環(huán)境,故不存在虛擬機(jī)相關(guān)問題,只存在重啟電腦切換系統(tǒng)的情況。
A)確認(rèn)Ubuntu默認(rèn)的shell 程序是不是bash,命令如下:
ls -l /bin/sh

通過執(zhí)行命令,我們可以看到Ubuntu 20.04 默認(rèn)的是dash,不是bash,所以我們需要把shell的默認(rèn)程序切換為bash,我用到的命令是: sudo dpkg-reconfigure dash
輸入完密碼后會(huì)彈出一個(gè)確認(rèn)shell 默認(rèn)程序的對(duì)話框,選擇No,即默認(rèn)不用dash,即可,系統(tǒng)會(huì)自動(dòng)切換成bash,至此第一步完成。

B)確認(rèn)Python 版本,要求使用Python3.7以上的版本,查看本級(jí)所用版本的命令如下:
python3 --version
通過執(zhí)行命令可以看到Ubuntu20.04自帶的Python版本是3.8.2 大于3.7,所以可以直接使用。
C)將Pyhton 軟連接到Python3.8上,通過命令:
python --version

我們可以看到Ubuntu并沒有默認(rèn)的Pyhton命令,所以我們需要將Python3.8 軟連接到Python上,具體命令如下:
cd /usr/bin && sudo rm python3 && sudo ln -s /usr/bin/python3.8 python && sudo ln -s /usr/bin/python3.8 python3 && python3 --version && python --version
執(zhí)行完這條命令后,會(huì)顯示兩個(gè)Python的版本均為3.8.2,則表示軟連接修改成功。

D)安裝并省級(jí)Pyrhon包管理工具,命令如下
sudo apt-get install python3-setuptools python3-pip -y

E)安裝Python的setuptools模塊,命令如下:
pip3install setuptools

執(zhí)行完命令,提示我們系統(tǒng)已經(jīng)安裝。
F)安裝GUI menuconfig工具(Kconfiglib),命令如下:
sudo pip3 install kconfiglib

敲完回車后,秒安裝完成
G) 安裝pycryptodome,命令如下:
sudo pip3 install pycryptodome

這個(gè)下載有點(diǎn)慢,大家可以抽空上個(gè)廁所。
H)安裝six,命令如下:
sudo pip3 install six --upgrade --ignore-instalLEDsix

在執(zhí)行完上述命令,安裝完six之后,我發(fā)現(xiàn)系統(tǒng)提示testsources 沒有裝,so,一個(gè)命令安裝上就好了,命令如下:
sudo pip3 install testresources
I)安裝ecdsa,命令如下:
sudo pip3 install ecdsa

J)安裝Scons,命令如下:
sudo apt-get install scons -y

K)安裝gn,這個(gè)沒有直接的命令,需要大家先下載到本地,然后手動(dòng)安裝
wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1523/linux/gn.1523.tar
解壓gn安裝包至~/gn路徑下。
tar -xvf gn.1523.tar -C ~/

設(shè)置環(huán)境變量。
vim ~/.bashrc
將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=~/gn:$PATH

生效環(huán)境變量。
source ~/.bashrc
L) 安裝ninja
wget https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
解壓ninja安裝包至~/ninja路徑下。
tar -xvf ninja.1.9.0.tar -C ~/
?? ?
設(shè)置環(huán)境變量。
vim ~/.bashrc
將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=~/ninja:$PATH

生效環(huán)境變量。
source ~/.bashrc
M)安裝最后一個(gè),也是最重要的一個(gè)軟件 gcc_riscv32
M-1、首先準(zhǔn)備好編譯環(huán)境,命令如下:
sudo apt-get install gcc && sudo apt-get install g++ && sudo apt-get install flex bison && sudo apt-get install texinfo

M-2、其次從git clone 源代碼
git clone --recursive https://github.com/riscv/riscv-gnu-toolchain

M-3、打開文件夾riscv-gnu-toolchain,先刪除空文件夾,以防止下載newlib,binutils,gcc時(shí)沖突。
cd riscv-gnu-toolchain && rm -RFriscv-newlib && rm -rf riscv-binutils && rm -rf riscv-gcc
M-4、下載riscv-newlib-3.0.0。
git clone -b riscv-newlib-3.0.0 https://github.com/riscv/riscv-newlib.git
M-5、下載riscv-binutils-2.31.1。
git clone -b riscv-binutils-2.31.1 https://github.com/riscv/riscv-binutils-gdb.git
M-6、下載riscv-gcc-7.3.0。
git clone -b riscv-gcc-7.3.0 https://github.com/riscv/riscv-gcc
M-7、下載riscv-gcc-7.3.0補(bǔ)丁。
這里官方的打補(bǔ)丁操作沒看懂,也沒操作成功,最后根據(jù)git的diff,手動(dòng)修改了對(duì)應(yīng)代碼文件,沒遇到沙問題。
M-8、下載GMP 6.1.2,
wgethttps://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2
并解壓安裝。
sudo tar -jxvf gmp-6.1.2.tar.bz2 && mkdir build_gmp && cd build_gmp && ../gmp-6.1.2/configure --prefix=/usr/local/gmp-6.1.2 --disable-shared && make && make install
(在這里遇到官方網(wǎng)站的一個(gè)Bug,居然把mpfr的安裝命令放在了gmp下,還好我及時(shí)發(fā)現(xiàn)了,沒有在這一步浪費(fèi)太多時(shí)間。)
M-9、下載mpfr-4.0.2 ,
wget https://www.mpfr.org/mpfr-4.0.2/mpfr-4.0.2.tar.gz
并解壓安裝。
tar -xvf mpfr-4.0.2.tar.gz && mkdir build_mpfr && cd build_mpfr && ../mpfr-4.0.2/configure --prefix=/usr/local/mpfr-4.0.2 --with-gmp=/usr/local/gmp-6.1.2 --disable-shared && make && make install
M-10、下載mpc-1.1.0 ,
wgethttps://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz
并解壓安裝。
tar -xvf mpc-1.1.0.tar.gz && mkdir build_mpc && cd build_mpc && ../mpc-1.1.0/configure --prefix=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.2 --disable-shared && make && make install
M-11、打開文件夾riscv-gnu-toolchain,新建工具鏈輸出目錄。
cd /opt && mkdir gcc_riscv32
M-12、編譯bintutils。
mkdir build_binutils && cd build_binutils && ../riscv-binutils-gdb/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --bindir=/opt/gcc_riscv32/bin --libexecdir=/opt/gcc_riscv32/riscv32 --libdir=/opt/gcc_riscv32 --includedir=/opt/gcc_riscv32 && make -j16 && make install
M-13、編譯newlib。
mkdir build_newlib && cd build_newlib && ../riscv-newlib/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --bindir=/opt/gcc_riscv32/bin --libexecdir=/opt/gcc_riscv32 --libdir=/opt/gcc_riscv32 --includedir=/opt/gcc_riscv32 && make -j16 && make install
M-14、編譯gcc。
mkdir build_gcc && cd build_gcc && ../riscv-gcc/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" LDFLAGS="-Wl,-z,relro,-z,now,-z,noexecstack" CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --with-headers="/opt/gcc-riscv32/riscv32-unknown-elf/include" --with-mpc=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.2 && make -j16 && make install
M-15、設(shè)置環(huán)境變量。
vim ~/.bashrc
M-16、將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=/opt/gcc_riscv32/bin:$PATH
?
M-17、生效環(huán)境變量。
source ~/.bashrc
M-18、最終執(zhí)行如下命令出現(xiàn)版本號(hào),即表示編譯器安裝成功
riscv32-unknown-elf-gcc -v

在構(gòu)建環(huán)境中的問題:
1、git clone 速度太慢,經(jīng)常超時(shí),改用http下載方式解決,下載速度很快
2、GMP 安裝命令錯(cuò)誤,導(dǎo)致執(zhí)行了兩遍,均失敗后,check了下命令發(fā)現(xiàn)有問題,修改成正確命令后,問題解決。
3、編譯newlib時(shí),生成make文件時(shí)報(bào)錯(cuò),沒有找到riscv32-unknown-elf-gcc命令,下載了gcc_riscv32-linux-7.3.0.tar.gz,解壓后將目錄加到環(huán)境變量后,終端執(zhí)行riscv32-unknown-elf-gcc 命令正常,退出終端重新進(jìn)入,再生成make文件不再報(bào)錯(cuò),問題解決。
4、安裝newlib時(shí),又報(bào)錯(cuò)riscv32-unknown-elf-ranlib命令找不到,后發(fā)現(xiàn)是root沒有權(quán)限,以root身份修改/etc/sudoers后解決。
1、首先說明下我的硬件環(huán)境: 筆記本電腦(P570WM),雙系統(tǒng)(Win7+Ubuntu 20.04)。

2、其次我認(rèn)為整個(gè)開發(fā)環(huán)境分為兩個(gè)部分: 開發(fā)-編譯環(huán)境(Ubuntu 20.04);
燒錄環(huán)境(Win 7);
3、參考文獻(xiàn):
鴻蒙官方網(wǎng)站相關(guān)資料,鏈接如下:https://device.harmonyos.com/cn/docs/start/introduce/oem_quickstart_3861_build-0000001054781998。
4、構(gòu)建開發(fā)-編譯環(huán)境
如前文所說,本次環(huán)境搭建為一臺(tái)電腦上的雙系統(tǒng)環(huán)境,故不存在虛擬機(jī)相關(guān)問題,只存在重啟電腦切換系統(tǒng)的情況。
A)確認(rèn)Ubuntu默認(rèn)的shell 程序是不是bash,命令如下:
ls -l /bin/sh

通過執(zhí)行命令,我們可以看到Ubuntu 20.04 默認(rèn)的是dash,不是bash,所以我們需要把shell的默認(rèn)程序切換為bash,我用到的命令是: sudo dpkg-reconfigure dash
輸入完密碼后會(huì)彈出一個(gè)確認(rèn)shell 默認(rèn)程序的對(duì)話框,選擇No,即默認(rèn)不用dash,即可,系統(tǒng)會(huì)自動(dòng)切換成bash,至此第一步完成。

B)確認(rèn)Python 版本,要求使用Python3.7以上的版本,查看本級(jí)所用版本的命令如下:
python3 --version
通過執(zhí)行命令可以看到Ubuntu20.04自帶的Python版本是3.8.2 大于3.7,所以可以直接使用。
C)將Pyhton 軟連接到Python3.8上,通過命令:
python --version

我們可以看到Ubuntu并沒有默認(rèn)的Pyhton命令,所以我們需要將Python3.8 軟連接到Python上,具體命令如下:
cd /usr/bin && sudo rm python3 && sudo ln -s /usr/bin/python3.8 python && sudo ln -s /usr/bin/python3.8 python3 && python3 --version && python --version
執(zhí)行完這條命令后,會(huì)顯示兩個(gè)Python的版本均為3.8.2,則表示軟連接修改成功。

D)安裝并省級(jí)Pyrhon包管理工具,命令如下
sudo apt-get install python3-setuptools python3-pip -y

E)安裝Python的setuptools模塊,命令如下:
pip3install setuptools

執(zhí)行完命令,提示我們系統(tǒng)已經(jīng)安裝。
F)安裝GUI menuconfig工具(Kconfiglib),命令如下:
sudo pip3 install kconfiglib

敲完回車后,秒安裝完成
G) 安裝pycryptodome,命令如下:
sudo pip3 install pycryptodome

這個(gè)下載有點(diǎn)慢,大家可以抽空上個(gè)廁所。
H)安裝six,命令如下:
sudo pip3 install six --upgrade --ignore-instalLEDsix

在執(zhí)行完上述命令,安裝完six之后,我發(fā)現(xiàn)系統(tǒng)提示testsources 沒有裝,so,一個(gè)命令安裝上就好了,命令如下:
sudo pip3 install testresources
I)安裝ecdsa,命令如下:
sudo pip3 install ecdsa

J)安裝Scons,命令如下:
sudo apt-get install scons -y

K)安裝gn,這個(gè)沒有直接的命令,需要大家先下載到本地,然后手動(dòng)安裝
wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1523/linux/gn.1523.tar
解壓gn安裝包至~/gn路徑下。
tar -xvf gn.1523.tar -C ~/

設(shè)置環(huán)境變量。
vim ~/.bashrc
將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=~/gn:$PATH

生效環(huán)境變量。
source ~/.bashrc
L) 安裝ninja
wget https://repo.huaweicloud.com/harmonyos/compiler/ninja/1.9.0/linux/ninja.1.9.0.tar
解壓ninja安裝包至~/ninja路徑下。
tar -xvf ninja.1.9.0.tar -C ~/

設(shè)置環(huán)境變量。
vim ~/.bashrc
將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=~/ninja:$PATH

生效環(huán)境變量。
source ~/.bashrc
M)安裝最后一個(gè),也是最重要的一個(gè)軟件 gcc_riscv32
M-1、首先準(zhǔn)備好編譯環(huán)境,命令如下:
sudo apt-get install gcc && sudo apt-get install g++ && sudo apt-get install flex bison && sudo apt-get install texinfo

M-2、其次從git clone 源代碼
git clone --recursive https://github.com/riscv/riscv-gnu-toolchain

M-3、打開文件夾riscv-gnu-toolchain,先刪除空文件夾,以防止下載newlib,binutils,gcc時(shí)沖突。
cd riscv-gnu-toolchain && rm -RFriscv-newlib && rm -rf riscv-binutils && rm -rf riscv-gcc
M-4、下載riscv-newlib-3.0.0。
git clone -b riscv-newlib-3.0.0 https://github.com/riscv/riscv-newlib.git
M-5、下載riscv-binutils-2.31.1。
git clone -b riscv-binutils-2.31.1 https://github.com/riscv/riscv-binutils-gdb.git
M-6、下載riscv-gcc-7.3.0。
git clone -b riscv-gcc-7.3.0 https://github.com/riscv/riscv-gcc
M-7、下載riscv-gcc-7.3.0補(bǔ)丁。
這里官方的打補(bǔ)丁操作沒看懂,也沒操作成功,最后根據(jù)git的diff,手動(dòng)修改了對(duì)應(yīng)代碼文件,沒遇到沙問題。
M-8、下載GMP 6.1.2,
wgethttps://gmplib.org/download/gmp/gmp-6.1.2.tar.bz2
并解壓安裝。
sudo tar -jxvf gmp-6.1.2.tar.bz2 && mkdir build_gmp && cd build_gmp && ../gmp-6.1.2/configure --prefix=/usr/local/gmp-6.1.2 --disable-shared && make && make install
(在這里遇到官方網(wǎng)站的一個(gè)Bug,居然把mpfr的安裝命令放在了gmp下,還好我及時(shí)發(fā)現(xiàn)了,沒有在這一步浪費(fèi)太多時(shí)間。)
M-9、下載mpfr-4.0.2 ,
wget https://www.mpfr.org/mpfr-4.0.2/mpfr-4.0.2.tar.gz
并解壓安裝。
tar -xvf mpfr-4.0.2.tar.gz && mkdir build_mpfr && cd build_mpfr && ../mpfr-4.0.2/configure --prefix=/usr/local/mpfr-4.0.2 --with-gmp=/usr/local/gmp-6.1.2 --disable-shared && make && make install
M-10、下載mpc-1.1.0 ,
wgethttps://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz
并解壓安裝。
tar -xvf mpc-1.1.0.tar.gz && mkdir build_mpc && cd build_mpc && ../mpc-1.1.0/configure --prefix=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.2 --disable-shared && make && make install
M-11、打開文件夾riscv-gnu-toolchain,新建工具鏈輸出目錄。
cd /opt && mkdir gcc_riscv32
M-12、編譯bintutils。
mkdir build_binutils && cd build_binutils && ../riscv-binutils-gdb/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --bindir=/opt/gcc_riscv32/bin --libexecdir=/opt/gcc_riscv32/riscv32 --libdir=/opt/gcc_riscv32 --includedir=/opt/gcc_riscv32 && make -j16 && make install
M-13、編譯newlib。
mkdir build_newlib && cd build_newlib && ../riscv-newlib/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --bindir=/opt/gcc_riscv32/bin --libexecdir=/opt/gcc_riscv32 --libdir=/opt/gcc_riscv32 --includedir=/opt/gcc_riscv32 && make -j16 && make install
M-14、編譯gcc。
mkdir build_gcc && cd build_gcc && ../riscv-gcc/configure --prefix=/opt/gcc_riscv32 --target=riscv32-unknown-elf --with-arch=rv32imc --with-abi=ilp32 --disable-__cxa_atexit --disable-libgomp --disable-libmudflap --enable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-multilib --enable-poison-system-directories --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-system-zlib CFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" CXXFLAGS="-fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wl,-z,relro,-z,now,-z,noexecstack -fPIE" LDFLAGS="-Wl,-z,relro,-z,now,-z,noexecstack" CXXFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" CFLAGS_FOR_TARGET="-Os -mcmodel=medlow -Wall -fstack-protector-strong -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -fno-short-enums -fno-short-wchar" --with-headers="/opt/gcc-riscv32/riscv32-unknown-elf/include" --with-mpc=/usr/local/mpc-1.1.0 --with-gmp=/usr/local/gmp-6.1.2 --with-mpfr=/usr/local/mpfr-4.0.2 && make -j16 && make install
M-15、設(shè)置環(huán)境變量。
vim ~/.bashrc
M-16、將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=/opt/gcc_riscv32/bin:$PATH

M-17、生效環(huán)境變量。
source ~/.bashrc
M-18、最終執(zhí)行如下命令出現(xiàn)版本號(hào),即表示編譯器安裝成功
riscv32-unknown-elf-gcc -v

在構(gòu)建環(huán)境中的問題:
1、git clone 速度太慢,經(jīng)常超時(shí),改用http下載方式解決,下載速度很快
2、GMP 安裝命令錯(cuò)誤,導(dǎo)致執(zhí)行了兩遍,均失敗后,check了下命令發(fā)現(xiàn)有問題,修改成正確命令后,問題解決。
3、編譯newlib時(shí),生成make文件時(shí)報(bào)錯(cuò),沒有找到riscv32-unknown-elf-gcc命令,下載了gcc_riscv32-linux-7.3.0.tar.gz,解壓后將目錄加到環(huán)境變量后,終端執(zhí)行riscv32-unknown-elf-gcc 命令正常,退出終端重新進(jìn)入,再生成make文件不再報(bào)錯(cuò),問題解決。
4、安裝newlib時(shí),又報(bào)錯(cuò)riscv32-unknown-elf-ranlib命令找不到,后發(fā)現(xiàn)是root沒有權(quán)限,以root身份修改/etc/sudoers后解決。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
wi-fi
+關(guān)注
關(guān)注
15文章
2333瀏覽量
128375 -
HarmonyOS
+關(guān)注
關(guān)注
80文章
2141瀏覽量
34976 -
HiSpark
+關(guān)注
關(guān)注
1文章
156瀏覽量
7602
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
Wi-Fi 8要來了!未來Wi-Fi技術(shù)演進(jìn)方向揭秘
產(chǎn)品銷售中,雖然Wi-Fi 7產(chǎn)品的銷量份額快速從年初的個(gè)位數(shù)百分比增長至14%,但Wi-Fi 6產(chǎn)品的銷量份額依然穩(wěn)定在60%左右。如果從存量設(shè)備來看,那么Wi-Fi 7路由器的占比將遠(yuǎn)遠(yuǎn)小于這個(gè)數(shù)。 ? 智能手機(jī)等終端設(shè)備已

淺談Wi-Fi 6E與Wi-Fi 7的關(guān)鍵器件——BAW濾波器新技術(shù)
作者: Qorvo 亞太區(qū)無線連接事業(yè)部高級(jí)行銷經(jīng)理林健富 ? 2020年1月,Wi-Fi聯(lián)盟正式宣布開放6GHz頻段(5925MHz-7125MHz),并將其命名為Wi-Fi 6E。2020年4月
發(fā)表于 09-19 18:29
?1073次閱讀

基于 SSID 的 Wi-Fi 定位:與其他定位服務(wù)的性能比較
,我們將使用 nRF9160 DK、nRF7002 EK和 PPK2 執(zhí)行并展示實(shí)際功耗和準(zhǔn)確性測(cè)量,以比較 nRF Cloud 提供的不同定位服務(wù)的性能。
背景知識(shí)
Wi-Fi 定位服務(wù)
Wi-Fi
發(fā)表于 08-31 21:01
LitePoint Wi-Fi測(cè)試軟件減輕客戶設(shè)計(jì)負(fù)擔(dān)
自Wi-Fi 7于一年多前獲得Wi-Fi聯(lián)盟認(rèn)證以來,作為最新一代通信技術(shù),Wi-Fi正逐步成為用戶實(shí)現(xiàn)無所不在無線連接的新選擇。隨著每一代Wi-Fi信號(hào)復(fù)雜性的提升,建議將硬件測(cè)試納

Wi-Fi 8:開啟極高可靠性 (UHR) 連接的新紀(jì)元——2
不連續(xù)的頻譜 (non-continuous spectrum) 環(huán)境下,也能夠執(zhí)行前導(dǎo)碼打孔操作。
圖4 展示了Wi-Fi 7中MRU的顯著效果,其能讓RU將信號(hào)干擾所導(dǎo)致的可用頻道損耗從75%降低
發(fā)表于 06-13 11:15
Wi-Fi 8:開啟極高可靠性 (UHR) 連接的新紀(jì)元——1
、5GHz與6GHz。關(guān)于標(biāo)準(zhǔn)正式發(fā)布的年份,業(yè)界目前預(yù)估為2028年,但真正的標(biāo)準(zhǔn)制定完成日期仍需以IEEE 與Wi-Fi Alliance 工作小組的進(jìn)度為準(zhǔn)。
圖2展示了IEEE正在進(jìn)行
發(fā)表于 06-13 11:09
基于 Wi-Fi 的定位服務(wù)
以下捕獲使用 location_wifi_get 函數(shù)請(qǐng)求 Wi-Fi 定位服務(wù)。該事件的總功耗為 125.85mC,日志顯示精確度為 30.0m。
Got location:
method
發(fā)表于 04-17 15:16
nRF Cloud Wi-Fi 定位服務(wù)
、Predictive-GPS、Single-Cell、Multi-Cell 和 Wi-Fi 定位。通過利用 nRF Cloud 的優(yōu)化定位算法,基于 Nordic SoC 和 模組的產(chǎn)品可在定位用例
發(fā)表于 04-17 15:07
Wi-Fi 定位服務(wù)
Wi-Fi 是一種著名的無線網(wǎng)絡(luò)技術(shù),用于設(shè)備的局域網(wǎng)和互聯(lián)網(wǎng)接入。Wi-Fi 通過 Wi-Fi 網(wǎng)絡(luò)為家庭、辦公室和學(xué)校等環(huán)境提供便捷的無線互聯(lián)網(wǎng)接入服務(wù)。
發(fā)表于 04-17 15:01
華為海思正式進(jìn)入Wi-Fi FEM賽道?
大家都知道了,2018年11 月離開銳迪科(RDA),前往福建晉江創(chuàng)立三伍微,專注于Wi-Fi射頻前端芯片,從路由器Wi-Fi FEM,到手機(jī)Wi-Fi FEM,再到IoT FEM全覆
發(fā)表于 12-11 17:42
摩爾斯微電子發(fā)布Wi-Fi HaLow評(píng)估套件,加速物聯(lián)網(wǎng)開發(fā)
近日,全球領(lǐng)先的Wi-Fi HaLow解決方案提供商摩爾斯微電子正式推出一款開創(chuàng)性的評(píng)估套件——MM6108-EKH05。這款完全整合的開發(fā)平臺(tái),旨在推動(dòng)各行業(yè)物聯(lián)網(wǎng)解決方案的快速發(fā)展
從Wi-Fi 4到Wi-Fi 7:網(wǎng)速飆升40倍的無線革命
Wi-Fi 6具有更高效率,適合密集設(shè)備環(huán)境,支持更低的延遲和更高的節(jié)能表現(xiàn)。 ? Wi-Fi 7 Wi-Fi 7是2024年發(fā)布的新一代標(biāo)準(zhǔn),提供超高數(shù)據(jù)速率,支持

Wi-Fi 7有哪些底層技術(shù)優(yōu)勢(shì)
您在多個(gè)Wi-Fi行業(yè)活動(dòng)中代表LitePoint。Wi-Fi 7帶來了哪些新穎且有趣的特點(diǎn)?
Wi-Fi 7與Wi-Fi 6E有什么區(qū)別
也許很多人還在考慮是否要將使用的Wi-Fi設(shè)備升級(jí)到Wi-Fi 6或Wi-Fi 6E,而這些標(biāo)準(zhǔn)的繼任者卻已經(jīng)開始“登堂入室”了。Wi-Fi 7是新一代
評(píng)論