キメラ・コンパイラと busybox OK
とりあえず、きめーら(とほほ)コンパイラ完成。
キメーラコンパイラ = カッパ(Kappa) コンパイラ =
ペタコンパイラ 3.4.1
xillinx の kernel の ヘッダ
uClibc 0.9.2 新しくコンパイルした版
ここでもう一度 uClibc のコンパイルですよ
.config は
confirm ( not change )
UCLIBC_FORMAT_FLAT=y
ARCH_BIG_ENDIAN=y
ARCH_HAS_NO_MMU=y
ARCH_HAS_NO_SHARED=y
must
KERNEL_HEADERS="FPGA_Linux/install/kernel_header/include"
change
# UCLIBC_HAS_FPU is not set
# HAVE_NO_PIC is not set
# UCLIBC_CTOR_DTOR is not set
CROSS_COMPILER_PREFIX="microblaze-uclinux-"
追加
これで make だけになった
make V=2
おーできた。
make PREFIX=$HOME/FPGA_Linux/install/temporary/ install
あいかわらず crti.o crtn.o がたりない。
なんちゃってをつくるか
uClibc からこぴして crti.o crtn.o をつくる。
crt0.o(peta gcc-3.4.1が要求。これは xilkernel の環境を
このころの peta は
まだひきずっている) は
crt1.o(uclibcが用意する) のリンク
rem:test> file test
test: BFLT executable - version 4 ram
はいうごいた(uclinux の rdinit で動いた)
Freeing unused kernel memory: 309k freed
Hello World by rem
昨日 syscall で妙な状態になったけど、
uclibc は
どうやら kernel のインクルードを見て
いろいろ自動生成するようだ。
だから、ちゃんと clean してから make しないといけない。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
はい busybox のコンパイル。
これは .config さえちゃんとしとけばいいはずだよ。
ところが uClinux の dist は変なことをやっていて。
busybox の場合
まず defconfig を .config にコピー
さらに config/.config から busybox 用の情報を grep して
まぜあわせている
これは mkconfig という busybox の下のシェルプロがやっている。
トップで make user/busybox_only とできるのだけど、
.config を初期化してしまうので非常に面倒。
本当は busybox で
make ARCH=microblaze CROSS_COMPILE=microblaze-uclinux-
とすればいいはず
デモエラー
make: *** No rule to make target `/config/.config', needed by `.config.mkconfig'
config.mkconfig
も関連しているんだよね、、、、
これだ
Makefile 内の
.config.mkconfig: $(ROOTDIR)/config/.config
sh ./mkconfig > .config.tmp
if cmp -s .config.mkconfig .config.tmp ; \
then \
rm -f .config.tmp ; \
else \
$(MAKE) clean; \
mv -f .config.tmp .config.mkconfig ; \
fi
これはたぶんオリジナルの busybox にはなくて、かってに dist がつけている。
# Modified for uClinux-dist, we generate the .config based on our
# global application config.
はいそうでした。
けずることにしました。
Rules.mk もかきなおし kernel_header を見るようにした。
#CFLAGS+=-I$(top_builddir)/include -I$(top_srcdir)/include -I$(srcdir)
CFLAGS+=-I$(top_builddir)/include -I$(HOME)/FPGA_Linux/install/kernel_header/include -I$(srcdir)
busybox/libbb/procps.c
に
#define PAGE_SHIFT (12) を加える。
どうも カーネルヘッダーとうまくいっていないらしい。header の要求が循環している
/home/ryos/FPGA_Linux/install/kernel_header/include/asm-generic/getorder.h: In function 'get_order':
あれあれ、いろんなものが undefine...
しかたがない dist に従うか、、、、
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
busybox もとにもどえす
vendor/Sinby をこぴ
vendor として Sinby prodcut としえてsp605 を選択
busybox Makefile 書き換え
.config.mkconfig の自動生成を抑制
#.config.mkconfig: $(ROOTDIR)/config/.config
# sh ./mkconfig > .config.tmp
# if cmp -s .config.mkconfig .config.tmp ; \
# then \
# rm -f .config.tmp ; \
# else \
# $(MAKE) clean; \
# mv -f .config.tmp .config.mkconfig ; \
# fi
busybox
make clean
config.mkconfig のコピー
cp ../_busybox/busybox_config.mkconfig .config.mkconfig
dist のトップディレクトリは
rem:petalinux-dist> ls include/
からっぽ
make で カーネルのメイクの途中で ^Cでとめる(あるいていど環境ができる)
make user/busyboxy_only
.config が上書きされていないことを確認
あれ?なぜか insmod をコンパイルしている、、、、
だめだ、、、、
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
dist をあきらめ オリジナルの busybox_1_00_rc3 を持ってくることにする。
busybox/libbb/procps.c に
#define PAGE_SHIFT (12) を加える。
どうも カーネルヘッダーとうまくいっていないらしい。header の要求が循環している
.config 書き換え
cross compiler と prefix を設定o
nfs と ifconfig をはずす
make clean
make ARCH=microblaze
さいご
microblaze-uclinux-strip: busybox: File format not recognized
でエラーになるけど(flt だから) できた!!
動くかね?
kernel 生成
make ARCH=microblaze CROSS_COMPILE=microblaze-unknown-linux-gnu- simpleImage.ryos_sp605
あっそか、いま kernel 3.0 の環境なんだ。
おーネットワークも入ってます。
dist に kernel 環境壊された、、、
復旧して動いた。