次に、eCos User Guide のChapter 11に従ってtarget libraryの構築を行ったところ、math library のところで以下のようなエラーで止まってしまいました。
/share/src/eCos/ecos-2.0/packages/language/c/libm/v2_0/src/mathincl/fdlibm.h:78:5: 警告: "target_flags" は定義されていません
/share/src/eCos/ecos-2.0/packages/language/c/libm/v2_0/src/mathincl/fdlibm.h:79:3: #error IEEE-style 64-bit doubles are required to use the math library
make[1]: *** [src/misc/matherr.o.d] エラー 1
cvs から ecos のtreeを checkout して試してみましたが同じ現象なので、gccの構築に問題があったのかもしれません(gcc 3.2.1)。ホストはVine Linux 2.6を用いています。
math library を外してtarget libraryを構築すると、printfがlinkに失敗するのでhello.cすら動かせません…。
どなたか解決方法を御存じでしたら是非教えて下さい。
よろしくお願いいたします。
コンパイル時に -L/usr/local/h8300-elf/lib/gcc-lib/h8300-elf/3.2.1/h8300h
を追加して、target.ld から libsupc++.a を削除すると、
...
/home/ykoya/src/eCos-work.nolibm/install/lib/libtarget.a(infra_diag.o): In function `.LM38':
infra_diag.o(.text+0x233): undefined reference to `___umoddi3'
/home/ykoya/src/eCos-work.nolibm/install/lib/libtarget.a(infra_diag.o): In function `.LM40':
infra_diag.o(.text+0x27d): undefined reference to `___udivdi3'
....
他多数のエラーが出る。
RE: fdlibm.hでlibmがコンパイルエラー (2003-10-16 01:13 by ysato #6211)
skipping incompatible /usr/local/h8300-elf/lib/gcc-lib/h8300-elf/3.3/libgcc.a when searching for libgcc.a
ということなので、MakefileのCLFAGSに-mhと-mint32を追加して下さい。
libgcc.aは/usr/local/h8300-elf/lib/gcc-lib/h8300-elf/3.3/h8300h/int32/にあるものを使うのが正解です。