LLVMLinuxをビルドしてみた
LLVMLinuxはLinux kernelをClang/LLVMでビルドできるようにしようというプロジェクトです。先日のELCでも紹介されていました。興味があったので、まずはビルドしてみました。
基本的には以下のページの手順に従ってやっただけ。
Useful links | ClangBuiltLinux
最初はUbuntu 12.04でやりましたが、以下のエラーがでました。
CMake Error at cmake/modules/HandleLLVMOptions.cmake:13 (message): Host GCC version must be at least 4.7!
gccは4.7以上が必要ということで、gccだけ追加しても他にも引っかかりそうに思ったのでUbuntu 14.04でやり直しました。
ソースの入手と準備
$ git clone http://git.linuxfoundation.org/llvmlinux.git $ cd llvmlinux/ $ sudo apt-get install build-essential cmake git git-svn \ kpartx libglib2.0-dev patch quilt \ rsync subversion zlib1g-dev flex libfdt1 libfdt-dev \ libpixman-1-0 libpixman-1-dev $ sudo apt-get install libc6:i386 libncurses5:i386 $ sudo apt-get install linaro-image-tools
ビルド
$ cd targets/vexpress $ nohup make & $ tail -f nohup.out
これで、llvm, clang, kernel, qemuなど全てソースコードをリポジトリからとってきて必要なパッチをあててビルドするところまで全自動でやってくれました。ログの最後に"# # # SUCCESS # # #"と出ているのでうまくいったのでしょう。
$ tail nohup.out input: ImExPS/2 Generic Explorer Mouse as /devices/mb:kmi1/serio1/input/input2 This root FS contains most basic linux utilities (implemented with busybox) and the Lynx web browser. Kernel config is available through /proc/config.gz Log in as root with no password. qemu login: Killed # # # SUCCESS # # # $
ビルドしたディレクトリを/home/koba/llvmlinux とすると、以下のコマンドでClang/LLVMでビルドしたkernelをqemuで起動できます。
$ QEMU_AUDIO_DRV=none /home/koba/llvmlinux/test/qemu/install/bin/qemu-system-arm -M vexpress-a9 \ -kernel /home/koba/llvmlinux/targets/vexpress/tmp/kernel_dtb.img -m 256 \ -append "mem=256M root=/dev/ram0 console=ttyAMA0 rw" \ -initrd /home/koba/llvmlinux/targets/vexpress/tmp/initramfs.img -net none -nographic -no-reboot
rootでログインして uname -a してみた結果。
~ # uname -a Linux qemu 3.15.0-rc7-llvmlinux-Lr209792-Cr209794+ #1 SMP Thu May 29 22:14:44 JST 2014 armv7l GNU/Linux ~ #
とりあえずはここまで。