[Suzaku:00418] Re: nan表示

email@hidden
2005年 9月 19日 (月) 23:48:07 JST


雨海です


> staticなリンクをやめ、SUZAKUに付いてきたツール類全体を
> 浮動小数点対応にするには、このコンパイラを使い、
> かつSUZAKUに付属しているuCLibcを上記buildrootで使った物に
> 入れ替えます。

だいたいうまく行ったようなので,報告します.

ちなみに,私が使ったのは
buildroot-20050905.tar.bz2
です.


1. buildrootの構築
http://buildroot.uclibc.org/
自分のホームディレクトリに展開したとします。
私の場合、/home/amagai/buildrootになります.
以下,/home/amagai/buildroot を,環境に合わせて適宜置換してください.

make menuconfig での設定点は下記の3点です。

Target Architecture → PowerPC
Toolchain Options → Kernel Headers → Linux 2.4.27  
Toolchain Options → Use software floating point by defaultをチェック

設定が終わったらmakeします。

2. uClibcのコピー
buildrootで使用したuClibc(0.9.28)を、SUZAKUのuClinuxツリーに
コピーします。
uClinux-dist-20040408-suzaku6/ にカレントディレクトリを移し、
mv uClibc uClibc.bak
cp -a /home/amagai/buildroot/toolchain_build_powerpc_nofpu/uClibc .
rm uClibc/.config

3. ファイルの書き換え
以下の3つのファイルに変更を加えます
uClinux-dist-20040408-suzaku6/vendors/AtmarkTechno/SUZAKU-V/Makefile
uClinux-dist-20040408-suzaku6/vendors/config/powerpc/config.arch
uClinux-dist-20040408-suzaku6/uClibc/Makefile

-------------------------
uClinux-dist-20040408-suzaku6/vendors/AtmarkTechno/SUZAKU-V/Makefile
への変更

@@ -82,7 +82,8 @@
        mkdir -p $(ROMFSDIR)/etc/init.d
        mkdir -p $(ROMFSDIR)/etc/rc.d

-       $(ROMFSINST) -s ld-uClibc-0.9.26.so /lib/ld.so.1
+#      $(ROMFSINST) -s ld-uClibc-0.9.26.so /lib/ld.so.1
+       $(ROMFSINST) -s ld-uClibc-0.9.28.so /lib/ld.so.1

 ifdef CONFIG_MTD_ATTACHED_ROMFS
        for i in $(DEVICES); do \
@@ -106,6 +107,10 @@

        $(ROMFSINST) -a "root:${ROOT_PASSWD}:0:0::/:/bin/sh" 
$(ETCDIR)/passwd

+ifdef CONFIG_USER_FLATFSD_FLATFSD
+       ln -fs /etc/config/passwd $(ROMFSDIR)/etc/passwd
+endif
+
 ifdef CONFIG_USER_INIT_INIT
 ifdef CONFIG_USER_TINYLOGIN_GETTY
        $(ROMFSINST) -a "ttyS0:vt100:/sbin/getty ttyS0 
115200" /etc/inittab

-------------------------
uClinux-dist-20040408-suzaku6/vendors/config/powerpc/config.arch
への変更

@@ -38,9 +38,12 @@
 # First settings we always want for all builds.
 #

+BUILDROOT = /home/amagai/buildroot
+
 MACHINE       = ppc
 ARCH          = ppc
-CROSS_COMPILE = powerpc-linux-
+## CROSS_COMPILE = powerpc-linux-
+CROSS_COMPILE = $(BUILDROOT)/build_powerpc_nofpu/staging_dir/bin/powerpc-linux-uclibc-
 CROSS         = $(CROSS_COMPILE)

 CC        = $(CROSS_COMPILE)gcc $(CPUCFLAGS)
@@ -54,7 +57,9 @@
 STRIP     = $(STRIPTOOL)

 LIBGCC = $(shell $(CC) $(CPUCFLAGS) -print-libgcc-file-name 2>&1)
-GCC_DIR = $(shell echo $(LIBGCC) | sed -e 's/be\///' | sed -e 's/libgcc.a//')
+# GCC_DIR = $(shell echo $(LIBGCC) | sed -e 's/be\///' | sed -e 's/libgcc.a//')
+GCC_DIR = $(BUILDROOT)/build_powerpc_nofpu/staging_dir/lib/gcc/powerpc-linux-uclibc/3.4.2/
+
 LIBGCC_DIR = $(shell echo $(LIBGCC) | sed -e 's/libgcc.a//')
 GXX_DIR = $(shell $(CC) -print-file-name=libstdc++.a 2>&1 | sed -e 's/libstdc++.a//')

@@ -210,9 +215,20 @@
        SH_CRTN = $(LIBGCC_DIR)/crtendS.o $(ROOTDIR)/lib/
$(LIBCDIR)/lib/crtn.o
   else
        # This means we are using uClibc
-       CRTI    = -nostartfiles $(ROOTDIR)/lib/$(LIBCDIR)/lib/crt0.o
+       ## CRTI    = -nostartfiles $(ROOTDIR)/lib/$(LIBCDIR)/lib/crt0.o
         # Use static linking
-       CRTN    = $(LIBGCC_DIR)/libgcc.a
+       ## CRTN    = $(LIBGCC_DIR)/libgcc.a
+       CRTI    = -nostartfiles $(ROOTDIR)/lib/$(LIBCDIR)/lib/crt1.o \
+                       $(ROOTDIR)/lib/$(LIBCDIR)/lib/crti.o \
+                       $(LIBGCC_DIR)/crtbegin.o -lgcc_s_nof
+       SH_CRTI = -nostartfiles $(ROOTDIR)/lib/$(LIBCDIR)/lib/crti.o \
+                       $(LIBGCC_DIR)/crtbeginS.o
+       CRTN    = \
+                       $(LIBGCC_DIR)/crtend.o \
+                       $(ROOTDIR)/lib/$(LIBCDIR)/lib/crtn.o \
+                       $(LIBGCC_DIR)/libgcc.a
+       SH_CRTN = $(LIBGCC_DIR)/crtendS.o $(ROOTDIR)/lib/
$(LIBCDIR)/lib/crtn.o
+
   endif

        SH_LDFLAGS := $(LDFLAGS) $(SH_CRTI) $(LDPATH)

-------------------------
uClinux-dist-20040408-suzaku6/uClibc/Makefile
への変更
以下の内容を、Makefileの最後に追加します。

.PHONY: romfs
romfs:
	$(INSTALL) -d $(ROMFSDIR)/lib
	cp -fa /home/amagai/buildroot/build_powerpc_nofpu/root/lib/*.so* $(ROMFSDIR)/lib/.
	yes no | cp -idp /home/amagai/buildroot/build_powerpc_nofpu/root/usr/lib/*.so* $(ROMFSDIR)/lib/.


ファイルの修正がすみましたら,SUZAKUのファイルを全部コンパイル
しなおします.

---
雨海 明博 [AMAGAI Akihiro]





suzaku メーリングリストの案内