[Uclinux-h8-devel] Re: Busybox-1.00-pre3のコンパイル方法

Zurück zum Archiv-Index

Hiroki MINEMATSU mine****@lanca*****
2003年 11月 28日 (金) 20:43:44 JST


峰松です
お世話になります

Akiyoshi SATO wrote:

>[2] Makefileのbusybox:〜の部分を以下のように書き換える。
>##########################################################################################
>busybox: .depend include/config.h $(libraries-y)
>	$(CC) $(LDOPT) -o $@ $(OBJCTS) $(LIBBB_LIB) $(UCL)
>##########################################################################################
>  
>
上記ですが、 h8300-elf-ld.real が何故か *.aの中から _mainを検出できない
ために
… という認識で正しいでしょうか。 当方も別経路から同じような対処に落ち着
きました。
こちらでとりました手法では:
.config:
EXTRA_CFLAGS_OPTIONS="-mh -mint32 -static -nostartfiles -I.
-I/usr/h8300-linux-uclib
c/usr/include -Wall"
さらに Makefileの busyboxの部分を
busybox: .depend include/config.h $(libraries-y)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ `echo $(libraries-y)|sed
"s/applets\.a/*.o/"` $(LIBRARIES)

上記のように変更し、
make CROSS=h8300-elf- \
LDFLAGS="-static -nostartfiles /usr/h8300-linux-uclibc/usr/lib/crt0.o
-L/usr/h8300-linux-uclibc/usr/lib -Wl,-elf2flt -Wl,-move-rodata
-Wl,--verbose"
で makeしました。

>[3] make menuconfig でShellのASHを外す。
>  
>
上記ですが、h8300-elf-gcc が コンパイラのバグ?によって停止するために、それ
を回避されていると推測しております。 当方では shell/ash.c のコンパイルが
どう
しても通りませんでした(gcc-3.2.1、gcc-3.2.3)

>[5] 続いて、make clean ; make とすると、次のようなエラーが出る。
>
>	busybox.elf2flt: In function `.L40':
>	busybox.elf2flt(.text+0x12b1b): undefined reference to `_daemon'
>	busybox.elf2flt: In function `.L91':
>	busybox.elf2flt(.text+0x134fb): undefined reference to `_daemon'
>	collect2: ld returned 1 exit status
>	make: *** [busybox] エラー 1
>  
>
上記は一部のコマンドが libbsdを使用するため、リンクに失敗しているようで
した。
for a in `find . -name '*.o'`;do echo $a;h8300-elf-nm $a|grep _daemon;done
上記のような スクリプトで_daemonに関連しそうなライブラリを抜き出して、
configから
外す方法で回避しました(後ろ向き…)。

その他、最後のリンク時に
/usr/local/lib/gcc-lib/h8300-elf/3.2.3/../../../../h8300-elf/bin/ld.real:
skipping incompatible /usr/h8300-linux-uclibc/usr/lib/libc.a when
searching for -lc
/usr/local/lib/gcc-lib/h8300-elf/3.2.3/../../../../h8300-elf/bin/ld.real:
cannot find -lc

上記のようなエラーメッセージに悩まされましたが、 -mh -mint32 -static 等
のリンカ
オプションを付け忘れた場合に出るようです(ので、チェックポイントor FAQとして
何処かにまとめておきます…)。

# 大逃避中…ううう
-- 
峰松 浩樹 mine****@lanca*****
TEL: 095-840-0021 DFAX: 020-4669-6889






Uclinux-h8-devel メーリングリストの案内
Zurück zum Archiv-Index