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í)候,你的交叉編譯工具鏈就做好了。那就寫(xiě)個(gè)hello world來(lái)測(cè)試下吧。
正常編譯出來(lái)hello.o了。
因?yàn)槭窃趗buntu的環(huán)境下,我們是不能直接執(zhí)行這個(gè)a.o的,因?yàn)樗莚iscv的交叉編譯工具編譯出來(lái)的。下面就安裝一下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ò)誤可以通過(guò) apt-get install ninja-build 解決 ERROR: glib-2.48 gthread-2.0 is required to compile QEMU //報(bào)上面這個(gè)錯(cuò)誤可以通過(guò) apt-get install libglib2.0-dev 解決總之一個(gè)原則:少啥裝啥。 下圖就是編譯好的,注意里面的路徑,我們需要qemu-riscv32這個(gè)去執(zhí)行工具鏈編譯好的二進(jìn)制文件。這里可以像上面一樣把他也放進(jìn)環(huán)境變量里面,我們以后用起來(lái)會(huì)比較方便,不用每次都寫(xiě)qemu-riscv32的路徑了。
最后就來(lái)看一下執(zhí)行結(jié)果吧:
至此,RISCV的編譯和運(yùn)行環(huán)境就弄好了。
-
Linux
+關(guān)注
關(guān)注
87文章
11304瀏覽量
209497 -
Ubuntu
+關(guān)注
關(guān)注
5文章
563瀏覽量
29762 -
環(huán)境搭建
+關(guān)注
關(guān)注
0文章
53瀏覽量
9057 -
RISC-V
+關(guān)注
關(guān)注
45文章
2277瀏覽量
46159
原文標(biāo)題:RISC-V編譯環(huán)境搭建
文章出處:【微信號(hào):FPGA開(kāi)源工坊,微信公眾號(hào):FPGA開(kāi)源工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論