Katsutoshi Itoh
cut-s****@maste*****
2004年 11月 30日 (火) 21:19:28 JST
伊東です。 長文失礼します。 早速ダウンロードしてインストールしようとしたら、 0.8.2 の make check でエラー発生しました。 まずいつものようにこちらの環境。 cut-sea @ jini> uname -rms NetBSD 1.6.2 i386 cut-sea @ jini> gauche-config --reconfigure ./configure '--with-slib=/usr/pkg/share/slib' '--with-local=/usr/pkg' '--with-prefix=/usr/local' '--enable-ipv6' '--with-rpath=/usr/local/lib:/usr/pkg/lib:/usr/lib' make にあたっては、 http://lists.sourceforge.jp/mailman/archives/gauche-devel-jp/2004-August/001054.html のスレッドによる LD_LIBRARY_PATH の一時変更により、 make まで正常終了しました。 一応 make clean;make し直して再確認しましたが、 make 自体は warnning すらない綺麗なものでした。 cut-sea @ jini> setenv|grep LD LD_LIBRARY_PATH=/home/cut-sea/compile/Gauche-0.8.2/src:/usr/local/lib:/usr/pkg/lib:/usr/X11R6/lib:/usr/lib cut-sea @ jini> ldd src/gosh src/gosh: -lcrypt.0 => /usr/lib/libcrypt.so.0 -lutil.6 => /usr/lib/libutil.so.6 -lm.0 => /usr/lib/libm387.so.0 -lm.0 => /usr/lib/libm.so.0 -lgauche => /home/cut-sea/compile/Gauche-0.8.2/src/libgauche.so -lc.12 => /usr/lib/libc.so.12 ここで make check を実行すると以下です。 長くなりますがまるごと付けます。 cut-sea @ jini> make check for d in gc src lib ext doc; do (cd $d; make all); done Making all in doc Making all in include for d in auxsys threads uvector charconv binary net termios fcntl sxml syslog dbm mt-random digest vport; do (cd $d; make default); done for d in gc src lib ext doc; do (cd $d; make check); done Making check in doc Making check in include make gctest `gctest' is up to date. make check-TESTS Completed 1 tests Allocated 648021 collectable objects Allocated 101 uncollectable objects Allocated 1250000 atomic objects Allocated 10880 stubborn objects Finalized 2206/2206 objects - finalization is probably ok Total number of bytes allocated is 49968088 Final heap size is 4169728 bytes Collector appears to work PASS: gctest ================== All 1 tests passed ================== TARGETLIB=`pwd` gcc -g -O2 -fPIC -DPIC -Wl,--rpath "-Wl,`pwd`" -L/usr/pkg/lib -o test-arith test-arith.o -L. -lgauche -lcrypt -lutil -lm test-arith.o: In function `test_32_64': /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:494: undefined reference to `Scm__ConstObjs' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:495: undefined reference to `Scm_GetIntegerClamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:498: undefined reference to `Scm_GetIntegerClamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:501: undefined reference to `Scm_GetIntegerClamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:504: undefined reference to `Scm_GetIntegerClamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:521: undefined reference to `Scm_GetIntegerUClamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:521: undefined reference to `Scm_MakeIntegerU' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:524: undefined reference to `Scm_GetIntegerUClamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:524: undefined reference to `Scm_MakeIntegerU' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:536: undefined reference to `Scm_GetInteger32Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:539: undefined reference to `Scm_GetInteger32Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:542: undefined reference to `Scm_GetInteger32Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:545: undefined reference to `Scm_GetInteger32Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:548: undefined reference to `Scm_GetIntegerU32Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:548: undefined reference to `Scm_MakeIntegerU' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:551: undefined reference to `Scm_GetIntegerU32Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:551: undefined reference to `Scm_MakeIntegerU' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:555: undefined reference to `Scm_GetInteger64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:555: undefined reference to `Scm_MakeInteger64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:558: undefined reference to `Scm_GetInteger64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:558: undefined reference to `Scm_MakeInteger64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:561: undefined reference to `Scm_GetInteger64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:561: undefined reference to `Scm_MakeInteger64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:564: undefined reference to `Scm_GetInteger64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:564: undefined reference to `Scm_MakeInteger64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:568: undefined reference to `Scm_GetInteger64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:568: undefined reference to `Scm_MakeInteger64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:571: undefined reference to `Scm_GetInteger64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:571: undefined reference to `Scm_MakeInteger64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:574: undefined reference to `Scm_GetInteger64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:574: undefined reference to `Scm_MakeInteger64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:577: undefined reference to `Scm_GetInteger64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:577: undefined reference to `Scm_MakeInteger64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:582: undefined reference to `Scm_GetInteger64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:582: undefined reference to `Scm_MakeInteger64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:585: undefined reference to `Scm_GetInteger64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:585: undefined reference to `Scm_MakeInteger64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:588: undefined reference to `Scm_GetInteger64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:588: undefined reference to `Scm_MakeInteger64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:591: undefined reference to `Scm_GetInteger64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:591: undefined reference to `Scm_MakeInteger64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:595: undefined reference to `Scm_GetIntegerU64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:595: undefined reference to `Scm_MakeIntegerU64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:598: undefined reference to `Scm_GetIntegerU64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:598: undefined reference to `Scm_MakeIntegerU64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:601: undefined reference to `Scm_GetIntegerU64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:601: undefined reference to `Scm_MakeIntegerU64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:604: undefined reference to `Scm_GetIntegerU64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:604: undefined reference to `Scm_MakeIntegerU64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:608: undefined reference to `Scm_GetIntegerU64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:608: undefined reference to `Scm_MakeIntegerU64' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:613: undefined reference to `Scm_GetInteger32Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:617: undefined reference to `Scm_GetInteger32Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:621: undefined reference to `Scm_GetInteger32Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:625: undefined reference to `Scm_GetInteger32Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:629: undefined reference to `Scm_GetInteger32Clamp' test-arith.o:/usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:633: more undefined references to `Scm_GetInteger32Clamp' follow test-arith.o: In function `test_32_64': /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:641: undefined reference to `Scm_GetIntegerU64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:645: undefined reference to `Scm_GetIntegerU64Clamp' /usr/home/cut-sea/compile/Gauche-0.8.2/src/test-arith.c:649: undefined reference to `Scm_GetIntegerU64Clamp' *** Error code 1 Stop. make: stopped in /usr/home/cut-sea/compile/Gauche-0.8.2/src for d in auxsys threads uvector charconv binary net termios fcntl sxml syslog dbm mt-random digest vport; do (cd $d; make check); done ../..//src/gosh -ftest -I. test.scm > test.log Testing auxsys ... passed. ../..//src/gosh -ftest -I. test.scm > test.log Testing threads ... passed. ../..//src/gosh -ftest -I. test.scm > test.log Testing uniform vector and array ... passed. ../..//src/gosh -ftest -I. test.scm > test.log Testing charconv ... passed. ../..//src/gosh -ftest -I. test.scm > test.log Testing binary ... passed. ../..//src/gosh -ftest -I. test.scm > test.log Testing net ... passed. ../..//src/gosh -ftest -I. test.scm > test.log Testing termios ... passed. ../..//src/gosh -ftest -I. test.scm > test.log Testing fcntl ... passed. ../..//src/gosh -ftest -I. test.scm > test.log Testing SSAX ... passed. Testing sxpath ... passed. ../..//src/gosh -ftest -I. test.scm > test.log Testing syslog ... passed. ../..//src/gosh -ftest -I. test.scm > test.log Testing dbm ... passed. ../..//src/gosh -ftest -I. test.scm > test.log Testing mt-random ... passed. ../..//src/gosh -ftest -I. test.scm > test.log Testing digest framework ... passed. ../..//src/gosh -ftest -I. test.scm > test.log Testing vport ... passed. ここまでです。 ほとんどの前半の試験がすっとんでます。 でも test-arith.o 自体はちゃんとコンパイル出来てて、nm 通すとこんな感じで一応 test_32_64 もある。 objdump --disassemble test-arith.o してみてもちゃんとルーチンがあるっぽいし。 cut-sea @ jini> nm test-arith.o U Scm_Add U Scm_EqualP U Scm_GetInteger32Clamp U Scm_GetInteger64Clamp U Scm_GetIntegerClamp U Scm_GetIntegerU32Clamp U Scm_GetIntegerU64Clamp U Scm_GetIntegerUClamp U Scm_Init U Scm_MakeInteger U Scm_MakeInteger64 U Scm_MakeIntegerU U Scm_MakeIntegerU64 U Scm_Negate U Scm_Printf U Scm_VM U Scm__ConstObjs U _GLOBAL_OFFSET_TABLE_ U __sF U __swbuf 00000000 D errcount U fprintf 000047f8 T main 00000000 T message U printf 00003eac T test_32_64 000009a0 T test_saddov 00003da4 T test_scm_c_scm 00002a50 T test_smulov 00001a58 T test_ssubov 00003e30 T test_true 000000bc T test_uadd 000005c4 T test_uaddov 00002378 T test_umul 0000250c T test_umulov 0000123c T test_usub 00001700 T test_usubov ここでほとんど U(未定義)だから実体はあんのか?ということで調べたら number.c 内ですね。 cut-sea @ jini> pwd /usr/home/cut-sea/compile/Gauche-0.8.2/src cut-sea @ jini> nm number.o | awk '$2=="T" || $2=="D"' 00000c84 T Scm_Abs 00001380 T Scm_Add 000003e0 T Scm_Angle 00003310 T Scm_Ash 00000080 D Scm_ComplexClass 00000170 T Scm_DecodeFlonum 00001f14 T Scm_Divide 00001088 T Scm_ExactToInexact 00002bf0 T Scm_Expt 00000af0 T Scm_GetDouble 00000700 T Scm_GetInteger32Clamp 00000810 T Scm_GetInteger64Clamp 000004f0 T Scm_GetIntegerClamp 0000072c T Scm_GetIntegerU32Clamp 00000968 T Scm_GetIntegerU64Clamp 000005f8 T Scm_GetIntegerUClamp 0000111c T Scm_InexactToExact 00000140 D Scm_IntegerClass 00000b54 T Scm_IntegerP 00003490 T Scm_LogAnd 00003594 T Scm_LogIor 0000341c T Scm_LogNot 0000365c T Scm_LogXor 0000034c T Scm_Magnitude 00000238 T Scm_MakeComplex 00000274 T Scm_MakeComplexNormalized 000002c8 T Scm_MakeComplexPolar 0000007c T Scm_MakeFlonum 000000b4 T Scm_MakeFlonumToNumber 00000478 T Scm_MakeInteger 00000758 T Scm_MakeInteger64 000004b8 T Scm_MakeIntegerU 000007bc T Scm_MakeIntegerU64 0000304c T Scm_MinMax 00002674 T Scm_Modulo 00001b28 T Scm_Multiply 00000e20 T Scm_Negate 00002e70 T Scm_NumCmp 00002ddc T Scm_NumEq 00000020 D Scm_NumberClass 000040ec T Scm_NumberToString 00000bdc T Scm_OddP 000011f8 T Scm_PromoteToBignum 000012e4 T Scm_PromoteToComplex 00001254 T Scm_PromoteToFlonum 00002384 T Scm_Quotient 000000e0 D Scm_RealClass 00000efc T Scm_Reciprocal 000031e0 T Scm_Round 00000d78 T Scm_Sign 00005368 T Scm_StringToNumber 00001764 T Scm_Subtract 00000a80 D Scm__ConstObjs 000053ac T Scm__InitNumber あるなぁ。なんで undefined reference なんてなるんでしょう。