*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


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS