riscv-gnu-toolchain是RISCV的交叉編譯工具鏈,在GitHub上的地址為:https://github.com/riscv-collab/riscv-gnu-toolchain,在國(guó)內(nèi)Gitee上也有鏈接,每天同步一次:https://gitee.com/mirrors/riscv-gnu-toolchain。 
	第一步就是下載交叉編譯工具鏈:
git clone git@github.com:riscv/riscv-gnu-toolchain.git cdriscv-gnu-toolchain git submodule update --init --recursive第二步下載需要的庫(kù)文件:(我是ubuntu的環(huán)境)
sudoapt-getinstallautoconfautomakeautotools-devcurllibmpc-devlibmpfr-devlibgmp-devgawkbuild-essentialbisonflextexinfogperflibtoolpatchutilsbczlib1g-devlibexpat-dev第三步設(shè)置環(huán)境變量:
exportRISCV="your path"http://path指你自己下載的工具鏈的路徑 exportPATH=$PATH:$RISCV/bin source/etc/profile//可以讓關(guān)閉當(dāng)前終端之后,設(shè)置的環(huán)境變量仍然有效第四步進(jìn)行編譯:
mkdirbuild//新建一個(gè)文件夾,讓整個(gè)目錄結(jié)構(gòu)更清晰一點(diǎn) cd build //生成32位的編譯工具 riscv32-unknown-elf-*** ../configure --prefix=$RISCV --with-arch=rv32gc --with-abi=ilp32d make -j4 //64位的 riscv64-unknown-elf-*** ../configure --prefix=$RISCV make -j4 //64位的linux-gnu-gcc版本 ../configure --prefix=$RISCV make linux -j4以上按位數(shù)分可以編譯為32位和64位兩種,另外就是都可以編譯為elf版本和linux版本。
這個(gè)時(shí)候,你的交叉編譯工具鏈就做好了。那就寫個(gè)hello world來測(cè)試下吧。
	
	正常編譯出來hello.o了。 
	因?yàn)槭窃趗buntu的環(huán)境下,我們是不能直接執(zhí)行這個(gè)a.o的,因?yàn)樗莚iscv的交叉編譯工具編譯出來的。下面就安裝一下qemu這個(gè)運(yùn)行環(huán)境吧。 
git clone https://git.qemu.org/git/qemu.git cd qemu git submodule init git submodule update --recursiveriscv的qemu有兩種:
用戶模式,可以運(yùn)行基于riscv指令集編譯的程序文件(target-list=riscv32-linux-user,target-list=riscv64-linux-user)
鏡像模擬器,可以運(yùn)行基于riscv指令集編譯的linux鏡像(target-list=riscv32-softmmu,target-list=riscv64-softmmu)
因?yàn)槲疑厦娼徊婢幾g工具鏈就是32位的,所以qemu也使用32位的,這里要對(duì)應(yīng)上,不然在qemu里面運(yùn)行編譯好的結(jié)果的會(huì)報(bào)錯(cuò)的。
cd qemu ./configure--target-list=riscv32-linux-user make-j4這個(gè)在編譯的時(shí)候可能會(huì)報(bào)錯(cuò),少庫(kù)啥的。 比如:
ERROR:CannotfindNinja //報(bào)上面這個(gè)錯(cuò)誤可以通過 apt-get install ninja-build 解決 ERROR: glib-2.48 gthread-2.0 is required to compile QEMU //報(bào)上面這個(gè)錯(cuò)誤可以通過 apt-get install libglib2.0-dev 解決總之一個(gè)原則:少啥裝啥。 下圖就是編譯好的,注意里面的路徑,我們需要qemu-riscv32這個(gè)去執(zhí)行工具鏈編譯好的二進(jìn)制文件。這里可以像上面一樣把他也放進(jìn)環(huán)境變量里面,我們以后用起來會(huì)比較方便,不用每次都寫qemu-riscv32的路徑了。
	
最后就來看一下執(zhí)行結(jié)果吧:
	
至此,RISCV的編譯和運(yùn)行環(huán)境就弄好了。
- 
                                Linux
                                +關(guān)注
關(guān)注
88文章
11586瀏覽量
217349 - 
                                Ubuntu
                                +關(guān)注
關(guān)注
5文章
603瀏覽量
32683 - 
                                環(huán)境搭建
                                +關(guān)注
關(guān)注
0文章
55瀏覽量
9401 - 
                                RISC-V
                                +關(guān)注
關(guān)注
48文章
2718瀏覽量
51355 
原文標(biāo)題:RISC-V編譯環(huán)境搭建
文章出處:【微信號(hào):FPGA開源工坊,微信公眾號(hào):FPGA開源工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
RISC-V MCU開發(fā) (一):集成開發(fā)環(huán)境
    
RISC-V開發(fā)分析 CSM32RV20開發(fā)板環(huán)境搭建
    
【「RISC-V體系結(jié)構(gòu)編程與實(shí)踐」閱讀體驗(yàn)】-- SBI及NEMU環(huán)境
關(guān)于RISC-V學(xué)習(xí)路線圖推薦
risc-v單片機(jī)使用分享
RISC-V單片機(jī)快速入門01-開發(fā)環(huán)境搭建 相關(guān)資料下載
RISC-V MCU開發(fā) (一):集成開發(fā)環(huán)境
目前RISC-V都支持哪些開發(fā)環(huán)境?
RISC-V嵌入式開發(fā)準(zhǔn)備篇1:編譯過程簡(jiǎn)介
    
RISC-V單片機(jī)快速入門01-開發(fā)環(huán)境搭建
    
RISC-V MCU CSM32RV20開發(fā)(一):環(huán)境搭建
    
關(guān)于RISC-V MCU開發(fā)實(shí)例(一):環(huán)境搭建
    
          
        
        
RISC-V編譯環(huán)境搭建
                
 
    
           
            
            
                
            
評(píng)論