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

準備

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

CrossCompile?

  • プログラミング例
    #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 で動かす

  • 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

  • ディレクトリを作成
    % cd ..
    % mkdir cbclang-on-arm
    % mkdir cbclang-arm-cross
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での起動

  • 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
Last-modified: 2018-11-29 (木) 20:18:26 (1975d)