From bug-octave-request at bevo dot che dot wisc dot edu Sun Dec 19 10:34:37 1999 Subject: Compilation (gcc-2.95.2) From: Hagen Gilsing To: bug-octave at bevo dot che dot wisc dot edu Date: Sun, 19 Dec 1999 10:34:41 -0600 (CST) Description: ----------- I tried to compile Octave (2.1.13) with a new-built gcc-2.95.2. gcc : version 2.95.2, i686-pc-linux-gnu (native host), residing in /usr/local, first in PATH, full distribution (libstdc++ included), compiled without problems (make bootstrap) binutils: version 2.9.1, i686-pc-linux-gnu (native host), residing in /usr/local, first in PATH uname -a: Linux Merlin 2.2.5 #2 Sat Dec 4 00:34:02 CET 1999 i686 unknown 1. The compilation of file liboctave/idx-vector.cc (gcc-2.95.2, octave-2.1.13) was interrupted by an error about mistyping: int (*)(const void*,const void*)-argument at line 469 in file idx-vector.cc. A cast shouldn't do any harm and solved the problem. --- idx-vector.cc Wed Dec 15 05:44:41 1999 +++ idx-vector.cc Wed Dec 15 05:44:41 1999 at @ -466,7 +466,7 @@ static inline void sort_data (int *d, int l) { - qsort (d, l, sizeof (int), intcmp); + qsort (d, l, sizeof (int), (int (*)(const void*,const void*))intcmp); } static inline int 2. During the last compilation step: c++ -I. -I/root/MathsPlotting/Octave/src/octave-2.1.13.src-i686-2.95.2-make-bootstrap/src -I.. ...\ -L.. -u MAIN__ -fPIC -g -o octave \ octave.o builtins.oops.o ... svd.o syl.o time.o \ -L../liboctave -L../libcruft -L../src -Xlinker -rpath -Xlinker ... -lm\ the following error occurs (see appendix A1 for more detailed description): ../liboctave/liboctave.so: undefined reference to `void subtract_vs, double, complex >(complex *, double const *, unsigned int, complex)' ../liboctave/liboctave.so: undefined reference to `void multiply_sv, double, complex >(complex *, double, complex const *, unsigned int)' ... collect2: ld returned 1 exit status make[2]: *** [octave] Error 1 make[2]: Leaving directory `/root/MathsPlotting/Octave/src/octave-2.1.13.src-i686-2.95.2-make-bootstrap/src' make[1]: *** [src] Error 2 The essential problem is, that the symbols add_vs__... add_vv__... divide_sv__... divide_vv__... multiply_vs__... multiply_vv__... subtract_sv__... subtract_vv__... , all from liboctave/mx-inlines.cc, remain unsolved in liboctave.so Calling make CColVector.o;nm CColVector.o|grep _v gives the same problem on file level (see Appendix A2). I tried to cure it with various additional options like -fno-inline etc., but without any success. I tried to cure the problem by replacing the g++-3 includes by the previous g++-includes (egcs-2.91.66), but without any success. Finally, when saving and replacing the C++-driver cc1plus of gcc-2.95.2 (/usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/cc1plus) by a link to the corresponding C++-driver of egcs-2.91.66, my current (well-working) native compiler, the problem disappears. I could not decide, whether: - this is a language problem - this is a compiler working problem (gcc-2.95.2) - this is a compiler building problem (misconfiguration on building gcc-2.95.2) Do you have any idea, what the reason could be and what could be a workaround ? Appendix A1: ------------ c++ -I. -I/root/MathsPlotting/Octave/src/octave-2.1.13.src-i686-2.95.2-make-bootstrap/src -I.. -I../liboctave -I../src -I../libcruft/misc -I/root/MathsPlotting/Octave/src/octave-2.1.13.src-i686-2.95.2-make-bootstrap -I/root/MathsPlotting/Octave/src/octave-2.1.13.src-i686-2.95.2-make-bootstrap/liboctave -I/root/MathsPlotting/Octave/src/octave-2.1.13.src-i686-2.95.2-make-bootstrap/src -I/root/MathsPlotting/Octave/src/octave-2.1.13.src-i686-2.95.2-make-bootstrap/libcruft/misc -I/root/MathsPlotting/Octave/src/octave-2.1.13.src-i686-2.95.2-make-bootstrap/glob -I../glob -DHAVE_CONFIG_H -mieee-fp -fno-rtti -fno-exceptions -fno-implicit-templates -g -O2 -Wall -rdynamic \ -L.. -u MAIN__ -fPIC -g -o octave \ octave.o builtins.o ops.o balance.o besselj.o betainc.o chol.o colloc.o dassl.o det.o eig.o expm.o fft.o fft2.o filter.o find.o fsolve.o gammainc.o getgrent.o getpwent.o getrusage.o givens.o hess.o ifft.o ifft2.o inv.o log.o lpsolve.o lsode.o lu.o minmax.o pinv.o qr.o quad.o qz.o rand.o schur.o sort.o svd.o syl.o time.o \ -L../liboctave -L../libcruft -L../src -Xlinker -rpath -Xlinker /usr/local/lib/octave-2.1.13 \ -loctinterp -loctave -lcruft ../readline/libreadline.a ../kpathsea/libkpathsea.a ../glob/libglob.a \ -lg2c -lm -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2 -L/usr/local/i686-pc-linux-gnu/lib -L/usr/local/lib -lm -lncurses -ldl -lm ../liboctave/liboctave.so: undefined reference to `void subtract_vs, double, complex >(complex *, double const *, unsigned int, complex)' ../liboctave/liboctave.so: undefined reference to `void multiply_sv, double, complex >(complex *, double, complex const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void subtract_sv, complex, double>(complex *, complex, double const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void divide_vs, complex, double>(complex *, complex const *, unsigned int, double)' ../liboctave/liboctave.so: undefined reference to `void multiply_vv, complex, double>(complex *, complex const *, double const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void multiply_vv, double, complex >(complex *, double const *, complex const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void add_vs, complex, double>(complex *, complex const *, unsigned int, double)' ../liboctave/liboctave.so: undefined reference to `void subtract_vs, complex, double>(complex *, complex const *, unsigned int, double)' ../liboctave/liboctave.so: undefined reference to `void subtract_vv, complex, double>(complex *, complex const *, double const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void add_vs, double, complex >(complex *, double const *, unsigned int, complex)' ../liboctave/liboctave.so: undefined reference to `void add_vv, double, complex >(complex *, double const *, complex const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void add_vv, complex, double>(complex *, complex const *, double const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void multiply_vs, double, complex >(complex *, double const *, unsigned int, complex)' ../liboctave/liboctave.so: undefined reference to `void divide_vv, double, complex >(complex *, double const *, complex const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void subtract_vv, double, complex >(complex *, double const *, complex const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void divide_sv, double, complex >(complex *, double, complex const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void divide_vs, double, complex >(complex *, double const *, unsigned int, complex)' ../liboctave/liboctave.so: undefined reference to `void multiply_sv, complex, double>(complex *, complex, double const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void add_sv, double, complex >(complex *, double, complex const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void subtract_sv, double, complex >(complex *, double, complex const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void divide_sv, complex, double>(complex *, complex, double const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void divide_vv, complex, double>(complex *, complex const *, double const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void add_sv, complex, double>(complex *, complex, double const *, unsigned int)' ../liboctave/liboctave.so: undefined reference to `void multiply_vs, complex, double>(complex *, complex const *, unsigned int, double)' collect2: ld returned 1 exit status make[2]: *** [octave] Error 1 make[2]: Leaving directory `/root/MathsPlotting/Octave/src/octave-2.1.13.src-i686-2.95.2-make-bootstrap/src' make[1]: *** [src] Error 2 make[1]: Leaving directory `/root/MathsPlotting/Octave/src/octave-2.1.13.src-i686-2.95.2-make-bootstrap' make: *** [all] Error 2 Appendix A2: ------------ ../liboctave "root" 07:36:44 946 # make CColVector.o c++ -c -I. -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/liboctave -I.. -I../liboctave -I../src -I../libcruft/misc -I/root/MathsPlotting/Octave/src/octave-2.1.13.src -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/liboctave -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/src -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/libcruft/misc -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/glob -I../glob -DHAVE_CONFIG_H -mieee-fp -fno-rtti -fno-exceptions -fno-implicit-templates -g -O2 -Wall CColVector.cc ../liboctave "root" 07:36:55 947 # nm CColVector.o|grep _v U __builtin_vec_new U add_vs__H3Zt7complex1ZdZdZt7complex1Zd_PX01PCX11UiX21_v U add_vs__H3Zt7complex1ZdZt7complex1ZdZd_PX01PCX11UiX21_v U add_vv__H3Zt7complex1ZdZdZt7complex1Zd_PX01PCX11PCX21Ui_v U add_vv__H3Zt7complex1ZdZt7complex1ZdZd_PX01PCX11PCX21Ui_v U divide_sv__H3Zt7complex1ZdZdZt7complex1Zd_PX01X11PCX21Ui_v U divide_sv__H3Zt7complex1ZdZt7complex1ZdZd_PX01X11PCX21Ui_v U divide_vs__H3Zt7complex1ZdZdZt7complex1Zd_PX01PCX11UiX21_v U divide_vs__H3Zt7complex1ZdZt7complex1ZdZd_PX01PCX11UiX21_v U divide_vv__H3Zt7complex1ZdZdZt7complex1Zd_PX01PCX11PCX21Ui_v U divide_vv__H3Zt7complex1ZdZt7complex1ZdZd_PX01PCX11PCX21Ui_v U fortran_vec__t5Array1Zd U fortran_vec__t5Array1Zt7complex1Zd U multiply_vs__H3Zt7complex1ZdZdZt7complex1Zd_PX01PCX11UiX21_v U multiply_vs__H3Zt7complex1ZdZt7complex1ZdZd_PX01PCX11UiX21_v U multiply_vv__H3Zt7complex1ZdZdZt7complex1Zd_PX01PCX11PCX21Ui_v U multiply_vv__H3Zt7complex1ZdZt7complex1ZdZd_PX01PCX11PCX21Ui_v 00000000 t str_vec_compare__FPCvT0 U subtract_sv__H3Zt7complex1ZdZdZt7complex1Zd_PX01X11PCX21Ui_v U subtract_sv__H3Zt7complex1ZdZt7complex1ZdZd_PX01X11PCX21Ui_v U subtract_vs__H3Zt7complex1ZdZdZt7complex1Zd_PX01PCX11UiX21_v U subtract_vs__H3Zt7complex1ZdZt7complex1ZdZd_PX01PCX11UiX21_v U subtract_vv__H3Zt7complex1ZdZdZt7complex1Zd_PX01PCX11PCX21Ui_v U subtract_vv__H3Zt7complex1ZdZt7complex1ZdZd_PX01PCX11PCX21Ui_v ../liboctave "root" 07:37:00 948 # c++ -v -Wall -c -I. -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/liboctave -I.. -I../liboctave -I../src -I../libcruft/misc -I/root/MathsPlotting/Octave/src/octave-2.1.13.src -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/liboctave -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/src -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/libcruft/misc -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/glob -I../glob -DHAVE_CONFIG_H -mieee-fp -fno-rtti -fno-exceptions -fno-implicit-templates -g -O2 -Wall CColVector.cc Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/specs gcc version 2.95.2 19991024 (release) /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/cpp -lang-c++ -v -I. -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/liboctave -I.. -I../liboctave -I../src -I../libcruft/misc -I/root/MathsPlotting/Octave/src/octave-2.1.13.src -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/liboctave -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/src -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/libcruft/misc -I/root/MathsPlotting/Octave/src/octave-2.1.13.src/glob -I../glob -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -D__ELF__ -Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix) -D__OPTIMIZE__ -g -Wall -Wall -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -Di686 -Dpentiumpro -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ -DHAVE_CONFIG_H CColVector.cc /tmp/ccmb7Cpb.ii GNU CPP version 2.95.2 19991024 (release) (i386 Linux/ELF) #include "..." search starts here: #include <...> search starts here: . .. ../liboctave ../src ../libcruft/misc /root/MathsPlotting/Octave/src/octave-2.1.13.src /root/MathsPlotting/Octave/src/octave-2.1.13.src/liboctave /root/MathsPlotting/Octave/src/octave-2.1.13.src/src /root/MathsPlotting/Octave/src/octave-2.1.13.src/libcruft/misc /root/MathsPlotting/Octave/src/octave-2.1.13.src/glob /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../include/g++-3 /usr/local/include /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/../../../../i686-pc-linux-gnu/include /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/include /usr/include End of search list. The following default directories have been omitted from the search path: End of omitted list. /usr/local/lib/gcc-lib/i686-pc-linux-gnu/2.95.2/cc1plus /tmp/ccmb7Cpb.ii -quiet -dumpbase CColVector.cc -mieee-fp -g -O2 -Wall -Wall -version -fno-rtti -fno-exceptions -fno-implicit-templates -o /tmp/ccLYtOsh.s GNU C++ version 2.95.2 19991024 (release) (i686-pc-linux-gnu) compiled by GNU C version egcs-2.91.66 19990314 (egcs-1.1.2 release). /usr/local/i686-pc-linux-gnu/bin/as -V -Qy -o CColVector.o /tmp/ccLYtOsh.s GNU assembler version 2.9.1 (i686-pc-linux-gnu), using BFD version 2.9.1 ../liboctave "root" 07:37:45 949 # Configuration (please do not edit this section): ----------------------------------------------- uname output: Linux Merlin 2.2.5 #2 Sat Dec 4 00:34:02 CET 1999 i686 unknown configure opts: --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --datadir=/usr/share --libexecdir=/usr/libexec --libdir=/usr/lib --includedir=/usr/include --infodir=/usr/info/octave-2.1.13 --mandir=/usr/man --srcdir=/root/MathsPlotting/Octave/octave-2.1.13.src --enable-dl --disable-static --enable-shared --enable-bounds-check --host=i686-pc-linux-gnu --target=i686-pc-linux-gnu Fortran compiler: g77 FFLAGS: -O F2C: F2CFLAGS: FLIBS: -lg2c -lm -L/usr/lib/gcc-lib/i486-linux/egcs-2.91.66 -L/usr/i486-linux/lib -lm CPPFLAGS: INCFLAGS: -I/usr/include/octave-2.1.13/octave -I/usr/include C compiler: gcc, version 2.91.66 19990314 (egcs-1.1.2 release) CFLAGS: -DHAVE_CONFIG_H -mieee-fp -g -O2 -Wall CPICFLAG: -fPIC C++ compiler: c++, version 2.91.66 19990314 (egcs-1.1.2 release) CXXFLAGS: -DHAVE_CONFIG_H -mieee-fp -fno-rtti -fno-exceptions -fno-implicit-templates -g -O2 -Wall CXXPICFLAG: -fPIC LDFLAGS: -g LIBFLAGS: -L/usr/lib/octave-2.1.13 RLD_FLAG: -Xlinker -rpath -Xlinker /usr/lib/octave-2.1.13 TERMLIBS: -lncurses LIBS: LEXLIB: LIBPLPLOT: LIBDLFCN: LIBGLOB: ./glob/libglob.a DEFS: -DOCTAVE_SOURCE=1 -DSEPCHAR=':' -DSEPCHAR_STR=":" -DUSE_READLINE=1 -DBOUNDS_CHECKING=1 -D__NO_MATH_INLINES=1 -DCXX_NEW_FRIEND_TEMPLATE_DECL=1 -DHAVE_LIBM=1 -DF77_APPEND_UNDERSCORE=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DNPOS=string::npos -DSTDC_HEADERS=1 -DHAVE_DIRENT_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_ASSERT_H=1 -DHAVE_CURSES_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FCNTL_H=1 -DHAVE_FLOAT_H=1 -DHAVE_FNMATCH_H=1 -DHAVE_GLOB_H=1 -DHAVE_GRP_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MEMORY_H=1 -DHAVE_NAN_H=1 -DHAVE_NCURSES_H=1 -DHAVE_PWD_H=1 -DHAVE_SGTTY_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TIMES_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_UTSNAME_H=1 -DHAVE_TERMCAP_H=1 -DHAVE_TERMIO_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_VARARGS_H=1 -DHAVE_ATEXIT=1 -DHAVE_BCOPY=1 -DHAVE_BZERO=1 -DHAVE_DUP2=1 -DHAVE_ENDGRENT=1 -DHAVE_ENDPWENT=1 -DHAVE_EXECVP=1 -DHAVE_FCNTL=1 -DHAVE_FORK=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETGRENT=1 -DHAVE_GETGRGID=1 -DHAVE_GETGRNAM=1 -DHAVE_GETHOSTNAME=1 -DHAVE_GETPGRP=1 -DHAVE_GETPID=1 -DHAVE_GETPPID=1 -DHAVE_GETPWENT=1 -DHAVE_GETPWNAM=1 -DHAVE_GETPWUID=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_GETUID=1 -DHAVE_GETWD=1 -DHAVE_LSTAT=1 -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 -DHAVE_MKFIFO=1 -DHAVE_ON_EXIT=1 -DHAVE_PIPE=1 -DHAVE_PUTENV=1 -DHAVE_RENAME=1 -DHAVE_RINDEX=1 -DHAVE_RMDIR=1 -DHAVE_SETGRENT=1 -DHAVE_SETPWENT=1 -DHAVE_SETVBUF=1 -DHAVE_SIGACTION=1 -DHAVE_SIGPENDING=1 -DHAVE_SIGPROCMASK=1 -DHAVE_SIGSUSPEND=1 -DHAVE_STAT=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRFTIME=1 -DHAVE_STRNCASECMP=1 -DHAVE_TEMPNAM=1 -DHAVE_UMASK=1 -DHAVE_UNLINK=1 -DHAVE_USLEEP=1 -DHAVE_VFPRINTF=1 -DHAVE_VSPRINTF=1 -DHAVE_WAITPID=1 -DSMART_PUTENV=1 -DHAVE_LIBDL=1 -DHAVE_DLOPEN=1 -DHAVE_DLSYM=1 -DHAVE_DLERROR=1 -DHAVE_DLCLOSE=1 -DWITH_DL=1 -DWITH_DYNAMIC_LINKING=1 -DHAVE_TIMEVAL=1 -DHAVE_FINITE=1 -DHAVE_ISNAN=1 -DHAVE_ISINF=1 -DHAVE_ACOSH=1 -DHAVE_ASINH=1 -DHAVE_ATANH=1 -DHAVE_ERF=1 -DHAVE_ERFC=1 -DHAVE_ST_BLKSIZE=1 -DHAVE_ST_BLOCKS=1 -DHAVE_ST_RDEV=1 -DHAVE_TM_ZONE=1 -DHAVE_GR_PASSWD=1 -DEXCEPTION_IN_MATH=1 -DRETSIGTYPE=void -DSYS_SIGLIST_DECLARED=1 -DHAVE_SYS_SIGLIST=1 -DHAVE_POSIX_SIGNALS=1 -DHAVE_GETRUSAGE=1 -DHAVE_TIMES=1 -DGNUPLOT_HAS_MULTIPLOT=1 -DGNUPLOT_HAS_FRAMES=1 ----------------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web: http://www.che.wisc.edu/octave/octave.html How to fund new projects: http://www.che.wisc.edu/octave/funding.html Subscription information: http://www.che.wisc.edu/octave/archive.html -----------------------------------------------------------------------