- 追加された行はこの色です。
- 削除された行はこの色です。
*dragonfly上で llvm の CrossCompile をした時のメモ [#v9d0fb30]
** 準備[#m668d5c0]
- ディレクトリを作成
% mkdir ~/src/cbclang-arm
% cd ~/src/cbclang-arm
- arm-linux-gnueabihf のインストール
--http://www.mediafire.com/file/r77svbzhqbwsmle/gcc-linaro-arm-linux-gnueabihf-raspbian-2014.05_mac.zip からダウンロードして展開し /usr/local/linaro/arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc があることを確認する
** CrossCompile [#gebb5bbb]
- http://www.welzels.de/blog/en/arm-cross-compiling-with-mac-os-x/ を 参考にhello.cを作って実行する
-- プログラミング例
#include<stdio.h>
int main(void) {
puts("Hello World");
return 0;
}
-- 実行
% /usr/local/linaro/arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc -g -o hello hello.c
-- CrossCompile できているか確認
% file hello
hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter
/lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.26,
BuildID[sha1]=a78af9ba00197d52a8ed7cbac433b24360c57283, not stripped
** Raspberry pi 3 で動かす [#re6435f8]
- QEMUのインストール
% brew install qemu
- 必要な CPU がサポートされているかチェック
% qemu-system-arm -M versatilepb -cpu '?' | grep arm1176
arm1176
arm1176が出力されればOK
- 起動
dragonfly上に先生のRaspberry Pi3 の kernel を置いてあるので,それを起動する
% cd ~/Users/one/src/cbclang-arm/raspberry3
% sh run-pi3.sh
別環境からkernel を持ってきた場合は実行する前に shell を書き直す必要がある
** CbClang-on-arm CMake [#ra244ed6]
- ディレクトリを作成
% cd ..
% mkdir cbclang-on-arm
% mkdir cbclang-arm-cross
- https://stackoverflow.com/questions/17275348/how-to-specify-new-gcc-path-for-cmake を参考にshell を作成
% vi cbclang-on-arm/cmake.sh
export CC=/usr/local/linaro/arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc
export CXX=/usr/local/linaro/arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++
cmake -G Ninja \
CMAKE_INSTALL_PREFIX:PATH=`pwd` ~/hg/CbC/CbC_llvm
- 実行
% cd cbclang-on-arm/
% rm -rf CMakeFiles CMakeCache.txt a.out
% ninja >& ers &
% tail -f ers
** qemuでの起動 [#sf52f156]
- dalmoreに入って
% cd /mnt/dalmore-home/one/src/xv6-rpi/src
% make clean; make -f makefile-armclang qemu
- デバッグ
% /net/open/Linux/arm/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-gdb kernel.elf