llvm-armCrossCompiler

llvm-armCrossCompiler

#author(“2018-11-29T11:18:26+00:00”,“game”,“game”)

# dragonfly上で llvm の CrossCompile をした時のメモ

# 準備

  • ディレクトリを作成
1
2
% mkdir ~/src/cbclang-arm  
% cd ~/src/cbclang-arm  

# 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 で動かす

  • QEMUのインストール
1
% brew install qemu
  • 必要な CPU がサポートされているかチェック
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での起動

  • dalmoreに入って
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
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy