[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 メーリングリストの案内