NetBSD-RPI / コンパイル環境の話

| コメント(0) | トラックバック(0)

早速、NetBSD-RPI で Volumio 計画を始めます。

まずは開発環境を整えないと話になりません。

NetBSD のいいところは、何と言っても OS 思想に組み込まれたマルチプラットホーム。Raspberry PI Port も当然のようにあります。いや、誰かが作ってくださったからあるので、当然なんかじゃないんですけどね。

なので、この恩恵にあずかるべく、x64 環境で ARM-7 をクロスコンパイルします。


NetBSD の設計思想に従うのであれば、Build.sh を使ってコンパイルするんですが、実は私、これがあまり好きではありません。コンパイルするときに、いちいちオプション引数を大量に渡さないといけないので、面倒なんです・・・・

なもんで、統合 Makefile を使います。

work/
  |
  +---- Makefile
  |
  +---- src
         |
         +--- bin
         |
         +--- sys
         .
         .
         .

こんな感じに Source を展開して、work ディレクトリで make コマンドを実行すれば、クロスコンパイルツールをつかってコンパイルしてくれるという仕組みです。NetBSD は 7-Release
※ src ディレクトリの下に、NetBSD の全 Source を展開するという意味ですよ。

んでまって、その Makefile がこれ

今のところ、これでコンパイルできるのは、

make tools

make sys

のみです。言わずもがな、ビルドツールのコンパイルと、Kernel のコンパイルです。

なお、この Makefile は作業中のものなので、要らないターゲットとか、ゴミがごっそり入ってます。使いこなしたい方は、再利用するなり、消すなり好きにしてください。

んでまって、大切な注意が一つ、コマンドサーチ path に ./ が含まれていると、ビルドツールのコンパイルに失敗します。

/bin/sh /usr/work/NetBSD-RPI/src/tools/gcc/../../external/gpl3/gcc/dist/gcc/mkconfig.sh bconfig.h
c++ -c   -O -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE  -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I/usr/work/NetBSD-RPI/src/tools/gcc/../../external/gpl3/gcc/dist/gcc -I/usr/work/NetBSD-RPI/src/tools/gcc/../../external/gpl3/gcc/dist/gcc/build -I/usr/work/NetBSD-RPI/src/tools/gcc/../../external/gpl3/gcc/dist/gcc/../include -I/usr/work/NetBSD-RPI/src/tools/gcc/../../external/gpl3/gcc/dist/gcc/../libcpp/include -I/usr/work/NetBSD-RPI/src/tools/gcc/../../external/gpl3/gcc/dist/gcc/../libdecnumber -I/usr/work/NetBSD-RPI/src/tools/gcc/../../external/gpl3/gcc/dist/gcc/../libdecnumber/dpd -I../libdecnumber -I/usr/work/NetBSD-RPI/src/tools/gcc/../../external/gpl3/gcc/dist/gcc/../libbacktrace   -DNETBSD_TOOLS -DTARGET_SYSTEM_ROOT=0  -DTARGET_SYSTEM_ROOT_RELOCATABLE \
        -o build/genconstants.o /usr/work/NetBSD-RPI/src/tools/gcc/../../external/gpl3/gcc/dist/gcc/genconstants.c
/var/tmp//ccIeCbYA.s: Assembler messages:
/var/tmp//ccIeCbYA.s:6: Error: unrecognized symbol type ""
/var/tmp//ccIeCbYA.s:10: Error: bad instruction `movq (%rdi),%rax'
/var/tmp//ccIeCbYA.s:11: Error: bad instruction `cmpq $0,16(%rax)'
/var/tmp//ccIeCbYA.s:12: Error: bad instruction `jne .L4'
/var/tmp//ccIeCbYA.s:13: Error: bad instruction `subq $8,%rsp'
/var/tmp//ccIeCbYA.s:15: Error: bad instruction `movq 8(%rax),%rdx'
/var/tmp//ccIeCbYA.s:16: Error: bad instruction `movq (%rax),%rsi'
/var/tmp//ccIeCbYA.s:17: Error: bad instruction `movl $.LC0,%edi'
/var/tmp//ccIeCbYA.s:18: Error: bad instruction `movl $0,%eax'
/var/tmp//ccIeCbYA.s:19: Error: bad instruction `call printf'
/var/tmp//ccIeCbYA.s:20: Error: bad instruction `movl $1,%eax'
/var/tmp//ccIeCbYA.s:21: Error: bad instruction `addq $8,%rsp'
/var/tmp//ccIeCbYA.s:23: Error: bad instruction `ret'
/var/tmp//ccIeCbYA.s:25: Error: bad instruction `movl $1,%eax'
/var/tmp//ccIeCbYA.s:26: Error: bad instruction `ret'
<後略>

こんなのが出たら、コマンド Path に ./ が含まれてます。

クロス用の gcc をコンパイルしている途中に、Host 用の cc でコンパイルしないといけないのに、クロス用 cc を使ってコンパイルした結果、アセンブラが意味わかんねーよ!とエラーになるみたいですね

トラックバック(0)

トラックバックURL: http://horliy.seri.gr.jp/MTcgi/mt-tb.cgi/51

コメントする

このブログ記事について

このページは、ほーりーが2015年11月26日 17:59に書いたブログ記事です。

ひとつ前のブログ記事は「NetBSD-RPI プロジェクト」です。

次のブログ記事は「NetBSD-RPI / SoCドライバソース」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。