FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages/

RISC-V向けRust-Toolchain試行(3. Repositoryと環境の修正試行)

f:id:msyksphinz:20171129020950p:plain

前回のRust on RISC-Vのツールチェインのビルドの続き。

msyksphinz.hatenablog.com

前回のRust on RISC-Vのツールチェインのビルドは、おそらくパッケージとライブラリの指定が足りないせいだ。 Ubuntu 17.10にパッケージを追加するのと、LD_LIBRARY_PATHを指定すれば何とかなると思う。

sudo apt install -y libssl-dev

さらに、ライブラリの場所を追加する。どうやらRustのツールチェインではLD_LIBRARY_PATHに追加して、LIBRARY_PATHも追加する必要がある?

export LD_LIBRARY_PATH=/home/msyksphinz/work/riscv-rust-toolchain/toolchain/lib/:${LD_LIBRARY_PATH}
export LIBRARY_PATH=${LD_LIBRARY_PATH}

これで、一応make toolchainが通るようになったらしい。というか、Haswell Refresh 4コア on VirtualBox + 8GBメモリを投入してビルドに数時間かかるって、Rustのツールチェイン構築ってどれだけ面倒なんだ。。。

f:id:msyksphinz:20171202024336p:plain

riscv-rust-quickstartの試行

riscv-rust-quickstartリポジトリをダウンロードしてくる。

github.com

環境変数の部分を少し変更しよう。RISCV_RUST_TOOLCHAINを今の環境(riscv-rust-toolchainの場所)に変更する。

diff --git a/env.sh b/env.sh
index e552973..6cf62e6 100644
--- a/env.sh
+++ b/env.sh
@@ -1,4 +1,4 @@
-export RISCV_RUST_TOOLCHAIN=~/repos/riscv-rust
+export RISCV_RUST_TOOLCHAIN=/home/msyksphinz/work/riscv-rust-toolchain

 export TOOLCHAIN=$RISCV_RUST_TOOLCHAIN/toolchain

実行する。make buildで実行可能だ。

msyksphinz@msyksphinz-VirtualBox:~/work/riscv-rust-quickstart$ make build
xargo build --target riscv32-unknown-none
   Compiling core v0.0.0 (file:///home/msyksphinz/work/riscv-rust-toolchain/rust/src/libcore)
LLVM ERROR: Cannot select: t107: i32,ch = AtomicLoad<Volatile LD1[%15]> t46, t2
  t2: i32,ch = CopyFromReg t0, Register:i32 %vreg9
    t1: i32 = Register %vreg9
In function: _ZN67_$LT$core..sync..atomic..AtomicBool$u20$as$u20$core..fmt..Debug$GT$3fmt17hc6a29f4acb3c894eE
error: Could not compile `core`.

To learn more, run the command again with --verbose.
error: `"cargo" "build" "--release" "--manifest-path" "/tmp/xargo.5rwceJRFvqOt/Cargo.toml" "--target" "riscv32-unknown-none" "-p" "alloc"` failed with exit code: Some(101)
note: run with `RUST_BACKTRACE=1` for a backtrace
Makefile:5: recipe for target 'build' failed
make: *** [build] Error 1

ぬーん?なんだこれは。なかなか上手く行かない。 こっちとしてはHiFive1でRustが動かしたいだけなのに。

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com