本文來源電子發燒友社區,作者:許浩然, 帖子地址:https://bbs.elecfans.com/jishu_2028169_1_1.html
1、首先說明下我的硬件環境: 筆記本電腦(P570WM),雙系統(Win7+Ubuntu 20.04)。
2、其次我認為整個開發環境分為兩個部分: 開發-編譯環境(Ubuntu 20.04);
燒錄環境(Win 7);
3、參考文獻:
鴻蒙官方網站相關資料,鏈接如下:https://device.harmonyos.com/cn/docs/start/introduce/oem_quickstart_3861_build-0000001054781998。
4、構建開發-編譯環境
如前文所說,本次環境搭建為一臺電腦上的雙系統環境,故不存在虛擬機相關問題,只存在重啟電腦切換系統的情況。
A)確認Ubuntu默認的shell 程序是不是bash,命令如下:
ls -l /bin/sh
通過執行命令,我們可以看到Ubuntu 20.04 默認的是dash,不是bash,所以我們需要把shell的默認程序切換為bash,我用到的命令是: sudo dpkg-reconfigure dash
輸入完密碼后會彈出一個確認shell 默認程序的對話框,選擇No,即默認不用dash,即可,系統會自動切換成bash,至此第一步完成。
B)確認Python 版本,要求使用Python3.7以上的版本,查看本級所用版本的命令如下:
python3 --version
通過執行命令可以看到Ubuntu20.04自帶的Python版本是3.8.2 大于3.7,所以可以直接使用。
C)將Pyhton 軟連接到Python3.8上,通過命令:
python --version
我們可以看到Ubuntu并沒有默認的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
執行完這條命令后,會顯示兩個Python的版本均為3.8.2,則表示軟連接修改成功。
D)安裝并省級Pyrhon包管理工具,命令如下
sudo apt-get install python3-setuptools python3-pip -y
E)安裝Python的setuptools模塊,命令如下:
pip3install setuptools
執行完命令,提示我們系統已經安裝。
F)安裝GUI menuconfig工具(Kconfiglib),命令如下:
sudo pip3 install kconfiglib
敲完回車后,秒安裝完成
G) 安裝pycryptodome,命令如下:
sudo pip3 install pycryptodome
這個下載有點慢,大家可以抽空上個廁所。
H)安裝six,命令如下:
sudo pip3 install six --upgrade --ignore-instalLEDsix
在執行完上述命令,安裝完six之后,我發現系統提示testsources 沒有裝,so,一個命令安裝上就好了,命令如下:
sudo pip3 install testresources
I)安裝ecdsa,命令如下:
sudo pip3 install ecdsa
J)安裝Scons,命令如下:
sudo apt-get install scons -y
K)安裝gn,這個沒有直接的命令,需要大家先下載到本地,然后手動安裝
wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1523/linux/gn.1523.tar
解壓gn安裝包至~/gn路徑下。
tar -xvf gn.1523.tar -C ~/
設置環境變量。
vim ~/.bashrc
將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=~/gn:$PATH
生效環境變量。
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 ~/
?? ?
設置環境變量。
vim ~/.bashrc
將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=~/ninja:$PATH
生效環境變量。
source ~/.bashrc
M)安裝最后一個,也是最重要的一個軟件 gcc_riscv32
M-1、首先準備好編譯環境,命令如下:
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時沖突。
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補丁。
這里官方的打補丁操作沒看懂,也沒操作成功,最后根據git的diff,手動修改了對應代碼文件,沒遇到沙問題。
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
(在這里遇到官方網站的一個Bug,居然把mpfr的安裝命令放在了gmp下,還好我及時發現了,沒有在這一步浪費太多時間。)
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、設置環境變量。
vim ~/.bashrc
M-16、將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=/opt/gcc_riscv32/bin:$PATH
?
M-17、生效環境變量。
source ~/.bashrc
M-18、最終執行如下命令出現版本號,即表示編譯器安裝成功
riscv32-unknown-elf-gcc -v
在構建環境中的問題:
1、git clone 速度太慢,經常超時,改用http下載方式解決,下載速度很快
2、GMP 安裝命令錯誤,導致執行了兩遍,均失敗后,check了下命令發現有問題,修改成正確命令后,問題解決。
3、編譯newlib時,生成make文件時報錯,沒有找到riscv32-unknown-elf-gcc命令,下載了gcc_riscv32-linux-7.3.0.tar.gz,解壓后將目錄加到環境變量后,終端執行riscv32-unknown-elf-gcc 命令正常,退出終端重新進入,再生成make文件不再報錯,問題解決。
4、安裝newlib時,又報錯riscv32-unknown-elf-ranlib命令找不到,后發現是root沒有權限,以root身份修改/etc/sudoers后解決。
1、首先說明下我的硬件環境: 筆記本電腦(P570WM),雙系統(Win7+Ubuntu 20.04)。
2、其次我認為整個開發環境分為兩個部分: 開發-編譯環境(Ubuntu 20.04);
燒錄環境(Win 7);
3、參考文獻:
鴻蒙官方網站相關資料,鏈接如下:https://device.harmonyos.com/cn/docs/start/introduce/oem_quickstart_3861_build-0000001054781998。
4、構建開發-編譯環境
如前文所說,本次環境搭建為一臺電腦上的雙系統環境,故不存在虛擬機相關問題,只存在重啟電腦切換系統的情況。
A)確認Ubuntu默認的shell 程序是不是bash,命令如下:
ls -l /bin/sh
通過執行命令,我們可以看到Ubuntu 20.04 默認的是dash,不是bash,所以我們需要把shell的默認程序切換為bash,我用到的命令是: sudo dpkg-reconfigure dash
輸入完密碼后會彈出一個確認shell 默認程序的對話框,選擇No,即默認不用dash,即可,系統會自動切換成bash,至此第一步完成。
B)確認Python 版本,要求使用Python3.7以上的版本,查看本級所用版本的命令如下:
python3 --version
通過執行命令可以看到Ubuntu20.04自帶的Python版本是3.8.2 大于3.7,所以可以直接使用。
C)將Pyhton 軟連接到Python3.8上,通過命令:
python --version
我們可以看到Ubuntu并沒有默認的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
執行完這條命令后,會顯示兩個Python的版本均為3.8.2,則表示軟連接修改成功。
D)安裝并省級Pyrhon包管理工具,命令如下
sudo apt-get install python3-setuptools python3-pip -y
E)安裝Python的setuptools模塊,命令如下:
pip3install setuptools
執行完命令,提示我們系統已經安裝。
F)安裝GUI menuconfig工具(Kconfiglib),命令如下:
sudo pip3 install kconfiglib
敲完回車后,秒安裝完成
G) 安裝pycryptodome,命令如下:
sudo pip3 install pycryptodome
這個下載有點慢,大家可以抽空上個廁所。
H)安裝six,命令如下:
sudo pip3 install six --upgrade --ignore-instalLEDsix
在執行完上述命令,安裝完six之后,我發現系統提示testsources 沒有裝,so,一個命令安裝上就好了,命令如下:
sudo pip3 install testresources
I)安裝ecdsa,命令如下:
sudo pip3 install ecdsa
J)安裝Scons,命令如下:
sudo apt-get install scons -y
K)安裝gn,這個沒有直接的命令,需要大家先下載到本地,然后手動安裝
wget https://repo.huaweicloud.com/harmonyos/compiler/gn/1523/linux/gn.1523.tar
解壓gn安裝包至~/gn路徑下。
tar -xvf gn.1523.tar -C ~/
設置環境變量。
vim ~/.bashrc
將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=~/gn:$PATH
生效環境變量。
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 ~/
?? ?
設置環境變量。
vim ~/.bashrc
將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=~/ninja:$PATH
生效環境變量。
source ~/.bashrc
M)安裝最后一個,也是最重要的一個軟件 gcc_riscv32
M-1、首先準備好編譯環境,命令如下:
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時沖突。
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補丁。
這里官方的打補丁操作沒看懂,也沒操作成功,最后根據git的diff,手動修改了對應代碼文件,沒遇到沙問題。
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
(在這里遇到官方網站的一個Bug,居然把mpfr的安裝命令放在了gmp下,還好我及時發現了,沒有在這一步浪費太多時間。)
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、設置環境變量。
vim ~/.bashrc
M-16、將以下命令拷貝到.bashrc文件的最后一行,保存并退出。
export PATH=/opt/gcc_riscv32/bin:$PATH
?
M-17、生效環境變量。
source ~/.bashrc
M-18、最終執行如下命令出現版本號,即表示編譯器安裝成功
riscv32-unknown-elf-gcc -v
在構建環境中的問題:
1、git clone 速度太慢,經常超時,改用http下載方式解決,下載速度很快
2、GMP 安裝命令錯誤,導致執行了兩遍,均失敗后,check了下命令發現有問題,修改成正確命令后,問題解決。
3、編譯newlib時,生成make文件時報錯,沒有找到riscv32-unknown-elf-gcc命令,下載了gcc_riscv32-linux-7.3.0.tar.gz,解壓后將目錄加到環境變量后,終端執行riscv32-unknown-elf-gcc 命令正常,退出終端重新進入,再生成make文件不再報錯,問題解決。
4、安裝newlib時,又報錯riscv32-unknown-elf-ranlib命令找不到,后發現是root沒有權限,以root身份修改/etc/sudoers后解決。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
wi-fi
+關注
關注
14文章
2169瀏覽量
124824 -
HarmonyOS
+關注
關注
79文章
1982瀏覽量
30412 -
HiSpark
+關注
關注
1文章
156瀏覽量
6945
發布評論請先 登錄
相關推薦
Wi-Fi 8要來了!未來Wi-Fi技術演進方向揭秘
產品銷售中,雖然Wi-Fi 7產品的銷量份額快速從年初的個位數百分比增長至14%,但Wi-Fi 6產品的銷量份額依然穩定在60%左右。如果從存量設備來看,那么Wi-Fi 7路由器的占比將遠遠小于這個數。 ? 智能手機等終端設備已
華為海思正式進入Wi-Fi FEM賽道?
大家都知道了,2018年11 月離開銳迪科(RDA),前往福建晉江創立三伍微,專注于Wi-Fi射頻前端芯片,從路由器Wi-Fi FEM,到手機Wi-Fi FEM,再到IoT FEM全覆
發表于 12-11 17:42
摩爾斯微電子發布Wi-Fi HaLow評估套件,加速物聯網開發
近日,全球領先的Wi-Fi HaLow解決方案提供商摩爾斯微電子正式推出一款開創性的評估套件——MM6108-EKH05。這款完全整合的開發平臺,旨在推動各行業物聯網解決方案的快速發展
從Wi-Fi 4到Wi-Fi 7:網速飆升40倍的無線革命
Wi-Fi 6具有更高效率,適合密集設備環境,支持更低的延遲和更高的節能表現。 ? Wi-Fi 7 Wi-Fi 7是2024年發布的新一代標準,提供超高數據速率,支持
Wi-Fi 7與Wi-Fi 6E有什么區別
也許很多人還在考慮是否要將使用的Wi-Fi設備升級到Wi-Fi 6或Wi-Fi 6E,而這些標準的繼任者卻已經開始“登堂入室”了。Wi-Fi 7是新一代
如何記住ESP8266中的Wi-Fi憑據?
您好,我正在與ESP8266合作,在公司進行一個項目。在成功智能配置后,我無法記住 Wi-Fi 憑據。ESP8266軟件版本如下:
在GMR
AT版本:1.2.0.0(Jul 1, 2016 20
發表于 07-15 07:07
未來的Wi-Fi路由器
轉載自——鐘林談芯 沒有創新就沒有未來,Wi-Fi路由器也是如此。 進入2024年以后,Wi-Fi路由器市場變得更加艱難,利潤大幅下滑,BOM成本價高于市場價,接不接訂單,都陷入兩難。 國內主芯片
DA16200 超低功耗 Wi-Fi 模塊開發套件 Pro數據手冊
電子發燒友網站提供《DA16200 超低功耗 Wi-Fi 模塊開發套件 Pro數據手冊.rar》資料免費下載
發表于 05-30 17:53
?1次下載
DA16200 超低功耗 Wi-Fi 模塊開發套件數據手冊
電子發燒友網站提供《DA16200 超低功耗 Wi-Fi 模塊開發套件數據手冊.rar》資料免費下載
發表于 05-30 17:13
?0次下載
驗證物聯網Wi-Fi HaLow用例的MM6108-EKH08開發套件來啦
驗證物聯網Wi-Fi HaLow用例的MM6108-EKH08開發套件來啦 MM6108-EKH08開發套件專為驗證物聯網Wi-Fi HaLow用例而設計。該
Wi-Fi的誕生與發展
短距離無線通信技術有Wi-Fi、ZigBee、藍牙以及Z-Wave,今天我們先揭開Wi-Fi的神秘面紗。Chrent短距離無線通信技術——Wi-Fi過去的20多年,Wi-Fi靠著僅有的
WI-FI基礎知識及飛易通SOC模塊
“WiFi”或“Wifi”,但是這些寫法并沒有被Wi-Fi聯盟認可。 一、通常說的WI-FI幾: 第一代:以IEEE 802.11為準,工作頻段為2.4GHz, 最高速率半雙工2Mbit/s.(1 Byte
Wi-Fi HaLow和傳統Wi-Fi的區別
Wi-Fi HaLow和傳統Wi-Fi的區別? Wi-Fi是一種無線網絡技術,可以連接到互聯網或局域網,為用戶提供無線上網的便利。隨著科技的發展和互聯網的普及,Wi-Fi也在不斷演進和
評論