riscv-gnu-toolchain은 riscv 관련 컴파일이 필요한 경우 설치해야 하는 툴로 riscv software들을 사용하기 위해서 우선적으로 빌드해야하는 녀석이다. 빌드 과정에서.. 삽질을 많이 하였기 때문에 그 과정을 공유하고자 한다.
How to build
git clone https://github.com/riscv-collab/riscv-gnu-toolchain
cd riscv-gnu-toolchain
mkdir build
cd build
../configure --prefix=/path/to/install/riscv
make
딱히 특별할 것 없는 컴파일 방법이지만 QEMU를 같이 사용하기 위해 나는 아래와 같이 config 파일을 변경했다.
../configure --prefix=$RISCV --enable-qemu-system --enable-multilib --with-arch=rv64gcv_zicsr
로 설정해주었다. 자세한 설정은 github repository의 readme파일을 읽어보길 바란다.
Problem
readme 파일을 읽다보면 riscv path를 환경 변수로 등록하고 $RISCV/bin 또한 path로 추가하는것을 권장한다.
문제는 여기서 발생하는데 확장으로 gnu-toolchain을 빌드하려고 하면 아래와 같은 오류가 나온다.
이 오류는 as가 잘못 지정되어서 발생하는 문제로 새롭게 설치되는 as 다시말해 어셈블러에게는 --64라는 옵션이 존재하지 않기 때문에 발생한다.
whereis as
which as
이 두개의 커맨드를 통해 현재 시스템의 어셈블러의 위치를 볼 수 있는데, /usr/bin/as가 먼저 우선순위가 올라가야 해당 오류가 해결될 수 있었다.
Sol
env를 통해 path를 확인했을 때 만약 $RISCV/bin이 우선시되어 있다면 /usr/bin을 더 우선시하도록 변경해주면 해당 오류는 사라진다. 이 사실을 몰라 3시간동안 make만 진행했다..
댓글