#author(“2018-11-29T11:18:26+00:00”,“game”,“game”)
#
dragonfly上で llvm の CrossCompile をした時のメモ
#
準備
1
2
|
% mkdir ~/src/cbclang-arm
% cd ~/src/cbclang-arm
|
- arm-linux-gnueabihf のインストール
#
CrossCompile
1
2
3
4
5
6
|
#include<stdio.h>
int main(void) {
puts("Hello World");
return 0;
}
|
* 実行
1
|
% /usr/local/linaro/arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc -g -o hello hello.c
|
* CrossCompile できているか確認
1
2
3
4
|
% 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 で動かす
1
2
|
% qemu-system-arm -M versatilepb -cpu '?' | grep arm1176
arm1176
|
arm1176が出力されればOK
- 起動
dragonfly上に先生のRaspberry Pi3 の kernel を置いてあるので,それを起動する
1
2
|
% cd ~/Users/one/src/cbclang-arm/raspberry3
% sh run-pi3.sh
|
別環境からkernel を持ってきた場合は実行する前に shell を書き直す必要がある
#
CbClang-on-arm CMake
1
2
3
|
% cd ..
% mkdir cbclang-on-arm
% mkdir cbclang-arm-cross
|
1
|
% vi cbclang-on-arm/cmake.sh
|
1
2
3
4
|
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
|
1
2
3
4
|
% cd cbclang-on-arm/
% rm -rf CMakeFiles CMakeCache.txt a.out
% ninja >& ers &
% tail -f ers
|
#
qemuでの起動
1
2
|
% cd /mnt/dalmore-home/one/src/xv6-rpi/src
% make clean; make -f makefile-armclang qemu
|
1
|
% /net/open/Linux/arm/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-gdb kernel.elf
|