(toppers-users 2345) Re: GNUWINGと浮動小数点処理

Kenichi Nakamura nakamura @ upwind-technology.com
2006年 3月 13日 (月) 16:32:02 JST


酔漢様

こんにちは。中村@アップウィンドテクノロジーです。

この度は、GNUWingをご利用いただき誠にありがとうございます。

Suikan wrote:
> こんにちは。酔漢です。
> 
> 浮動小数点処理について質問があります。
> 
> Design Wave MagazineのTOPPERS/JSP ADuC7026ポートをアップウィンドテクノロ
> ジーのGNUWINGと一緒に使用しています。浮動小数点演算( round関数 )を使うと
> 以下のようなエラーが発生してldが異常終了します。roundに限らずmath関数は
> すべてこうなります。math.hはインクルードしています。
> 
> arm-elf-gcc -mcpu=arm7tdmi -mlittle-endian -nodefaultlibs -nostartfiles
> -g -O2
> -DGDB_STUB -I. -I../../include -I../../config/armv4/frk_aduc
> -I../../config/a
> rmv4 -nostdlib -mcpu=arm7tdmi -N -mlittle-endian -T ../../config/armv4/frk_a
> duc/frk_aduc.ld -o jsp.exe \
> start.o spitest.o timer.o serial.o logtask.o log_output.o v
> asyslog.o t_perror.o strerror.o kernel_cfg.o libkernel.a -lgcc
> spitest.o(.text+0x13c): In function `show_adc_data':
> /cygdrive/c/jsp/jsp-ws/spitest/spitest.c:71: undefined reference to `round'
> 
> 
> -nodefaultlibs を指定しているためでしょうか。おそらくlibmのどれかを強制
> 的にリンクしてやればいいのだと思いますが、armのlibは選択肢が多くて頭を抱
> えております。

この場合は、-lm -lgccを追加すれば良いです。
libm.a内の必要なコードがリンクされます。

-nodefaultlibsの指定を外しても、この場合は、-nostdlibが指定されていますので、
標準システムライブラリがリンクされないため、同じエラーになります。

参考:
-nostartfiles:リンク時に標準スタートアップファイルを使用しません。標準システ
ムライブラリは、-nostdlibや-nodefaultlibsが使用されない限り、通常は使用されます。
-nodefaultlibs:リンク時に標準システムライブラリを使用しません。指定されたライ
ブラリだけがリンカに渡されます。標準スタートアップファイルは、-nostartfilesが
使われない限り、通常は使用されます。
-nostdlib:リンク時に標準スタートアップファイルや標準システムライブラリを使用
しません。

--
アップウィンドテクノロジー・インコーポレイテッド (Upwind Technology, Inc.)
技術部 中村憲一
E-mail:nakamura @ upwind-technology.com
URL:http://www.upwind-technology.com/
--
FSF E-mail:nakamura @ member.fsf.org
Join FSF as an Associate Member at:
<URL:http://member.fsf.org/join?referrer=3856>