Costas
5/28/2007 8:46:00 PM
On May 28, 11:05 am, "M. Edward (Ed) Borasky" <z...@cesmail.net>
wrote:
> Costas wrote:
> > On May 25, 4:54 pm, "M. Edward (Ed) Borasky" <z...@cesmail.net> wrote:
>
> >> Costas wrote:
>
> >>> On May 24, 1:11 pm, Costas <c_pilio...@yahoo.com> wrote:
>
> >>>> I've been fiddling with installing each of the stable snapshot and the
> >>>> 1.8.6 build on the Download Ruby page and it barfs on me.
>
> >>>> I'm running RHEL4 onx86_64( Red Hat Enterprise Linux AS release 4
> >>>> (Nahant Update 4) ) - Linux 2.6.9-42.0.2.ELsmp #1 SMP Thu Aug 17
> >>>> 17:57:31 EDT 2006x86_64x86_64x86_64GNU/Linux
>
> >>>> I run the configure script, and then make.
>
> >>>> When building it, it seems to trip on bigdecimal:
>
> >>>> make[1]: Entering directory `/data/db2home/dw/ruby-1.8.6/ext/
> >>>> bigdecimal'
> >>>> gcc -I. -I../.. -I../../. -I../.././ext/bigdecimal -fPIC -g -O2 -c
> >>>> bigdecimal.c
> >>>> gcc -shared -rdynamic -Wl,-export-dynamic -L'../..' -o ../../.ext/x86_64-linux/bigdecimal.so bigdecimal.o -lcrypt -lm -lc
> >>>> /usr/bin/ld: /opt/usr/bin/../lib/gcc/x86_64-redhat-linux/
> >>>> 3.4.6/../../../../lib64/libm.a(k_standard.o): relocation R_X86_64_32S
> >>>> against `a local symbol' can not be used when making a shared object;
> >>>> recompile with -fPIC
> >>>> /opt/usr/bin/../lib/gcc/x86_64-redhat-linux/3.4.6/../../../../lib64/
> >>>> libm.a: could not read symbols: Bad value
> >>>> collect2: ld returned 1 exit status
> >>>> make[1]: *** [../../.ext/x86_64-linux/bigdecimal.so] Error 1
> >>>> make[1]: Leaving directory `/data/db2home/dw/ruby-1.8.6/ext/
> >>>> bigdecimal'
> >>>> make: *** [all] Error 1
>
> >>>> Here's the output of ./configure:
>
> >>>> checking build system type...x86_64-unknown-linux-gnu
> >>>> checking host system type...x86_64-unknown-linux-gnu
> >>>> checking target system type...x86_64-unknown-linux-gnu
> >>>> checking for gcc... gcc
> >>>> checking for C compiler default output file name... a.out
> >>>> checking whether the C compiler works... yes
> >>>> checking whether we are cross compiling... no
> >>>> checking for suffix of executables...
> >>>> checking for suffix of object files... o
> >>>> checking whether we are using the GNU C compiler... yes
> >>>> checking whether gcc accepts -g... yes
> >>>> checking for gcc option to accept ISO C89... none needed
> >>>> checking how to run the C preprocessor... gcc -E
> >>>> checking for grep that handles long lines and -e... /bin/grep
> >>>> checking for egrep... /bin/grep -E
> >>>> checking whether gcc needs -traditional... no
> >>>> checking whether the linker is GNU ld... yes
> >>>> checking whether gcc -E accepts -o... yes
> >>>> checking for bison... bison -y
> >>>> checking for ranlib... ranlib
> >>>> checking for ar... ar
> >>>> checking for as... as
> >>>> checking whether ln -s works... yes
> >>>> checking whether make sets $(MAKE)... yes
> >>>> checking for a BSD-compatible install... /usr/bin/install -c
> >>>> checking for AIX... no
> >>>> checking for ANSI C header files... yes
> >>>> checking for sys/types.h... yes
> >>>> checking for sys/stat.h... yes
> >>>> checking for stdlib.h... yes
> >>>> checking for string.h... yes
> >>>> checking for memory.h... yes
> >>>> checking for strings.h... yes
> >>>> checking for inttypes.h... yes
> >>>> checking for stdint.h... yes
> >>>> checking for unistd.h... yes
> >>>> checking minix/config.h usability... no
> >>>> checking minix/config.h presence... no
> >>>> checking for minix/config.h... no
> >>>> checking for special C compiler options needed for large files... no
> >>>> checking for _FILE_OFFSET_BITS value needed for large files... no
> >>>> checking for long long... yes
> >>>> checking for off_t... yes
> >>>> checking for int... yes
> >>>> checking size of int... 4
> >>>> checking for short... yes
> >>>> checking size of short... 2
> >>>> checking for long... yes
> >>>> checking size of long... 8
> >>>> checking for long long... (cached) yes
> >>>> checking size of long long... 8
> >>>> checking for __int64... no
> >>>> checking size of __int64... 0
> >>>> checking for off_t... (cached) yes
> >>>> checking size of off_t... 8
> >>>> checking for void*... yes
> >>>> checking size of void*... 8
> >>>> checking for float... yes
> >>>> checking size of float... 4
> >>>> checking for double... yes
> >>>> checking size of double... 8
> >>>> checking for time_t... yes
> >>>> checking size of time_t... 8
> >>>> checking for pid_t... yes
> >>>> checking for gid_t... yes
> >>>> checking for uid_t... yes
> >>>> checking for prototypes... yes
> >>>> checking token paste string... ansi
> >>>> checking for variable length prototypes and stdarg.h... yes
> >>>> checking for noreturn function attribute... __attribute__ ((noreturn))
> >>>> x
> >>>> checking for noinline function attribute... __attribute__ ((noinline))
> >>>> x
> >>>> checking for RUBY_EXTERN... no
> >>>> checking whether sys_nerr is declared... yes
> >>>> checking for crypt in -lcrypt... yes
> >>>> checking for dlopen in -ldl... no
> >>>> checking for shl_load in -ldld... no
> >>>> checking for dirent.h that defines DIR... yes
> >>>> checking for library containing opendir... none required
> >>>> checking for ANSI C header files... (cached) yes
> >>>> checking for sys/wait.h that is POSIX.1 compatible... yes
> >>>> checking for stdlib.h... (cached) yes
> >>>> checking for string.h... (cached) yes
> >>>> checking for unistd.h... (cached) yes
> >>>> checking limits.h usability... yes
> >>>> checking limits.h presence... yes
> >>>> checking for limits.h... yes
> >>>> checking sys/file.h usability... yes
> >>>> checking sys/file.h presence... yes
> >>>> checking for sys/file.h... yes
> >>>> checking sys/ioctl.h usability... yes
> >>>> checking sys/ioctl.h presence... yes
> >>>> checking for sys/ioctl.h... yes
> >>>> checking sys/syscall.h usability... yes
> >>>> checking sys/syscall.h presence... yes
> >>>> checking for sys/syscall.h... yes
> >>>> checking fcntl.h usability... yes
> >>>> checking fcntl.h presence... yes
> >>>> checking for fcntl.h... yes
> >>>> checking sys/fcntl.h usability... yes
> >>>> checking sys/fcntl.h presence... yes
> >>>> checking for sys/fcntl.h... yes
> >>>> checking sys/select.h usability... yes
> >>>> checking sys/select.h presence... yes
> >>>> checking for sys/select.h... yes
> >>>> checking sys/time.h usability... yes
> >>>> checking sys/time.h presence... yes
> >>>> checking for sys/time.h... yes
> >>>> checking sys/times.h usability... yes
> >>>> checking sys/times.h presence... yes
> >>>> checking for sys/times.h... yes
> >>>> checking sys/param.h usability... yes
> >>>> checking sys/param.h presence... yes
> >>>> checking for sys/param.h... yes
> >>>> checking syscall.h usability... yes
> >>>> checking syscall.h presence... yes
> >>>> checking for syscall.h... yes
> >>>> checking pwd.h usability... yes
> >>>> checking pwd.h presence... yes
> >>>> checking for pwd.h... yes
> >>>> checking grp.h usability... yes
> >>>> checking grp.h presence... yes
> >>>> checking for grp.h... yes
> >>>> checking a.out.h usability... yes
> >>>> checking a.out.h presence... yes
> >>>> checking for a.out.h... yes
> >>>> checking utime.h usability... yes
> >>>> checking utime.h presence... yes
> >>>> checking for utime.h... yes
> >>>> checking for memory.h... (cached) yes
> >>>> checking direct.h usability... no
> >>>> checking direct.h presence... no
> >>>> checking for direct.h... no
> >>>> checking sys/resource.h usability... yes
> >>>> checking sys/resource.h presence... yes
> >>>> checking for sys/resource.h... yes
> >>>> checking sys/mkdev.h usability... no
> >>>> checking sys/mkdev.h presence... no
> >>>> checking for sys/mkdev.h... no
> >>>> checking sys/utime.h usability... no
> >>>> checking sys/utime.h presence... no
> >>>> checking for sys/utime.h... no
> >>>> checking netinet/in_systm.h usability... yes
> >>>> checking netinet/in_systm.h presence... yes
> >>>> checking for netinet/in_systm.h... yes
> >>>> checking float.h usability... yes
> >>>> checking float.h presence... yes
> >>>> checking for float.h... yes
> >>>> checking ieeefp.h usability... no
> >>>> checking ieeefp.h presence... no
> >>>> checking for ieeefp.h... no
> >>>> checking pthread.h usability... yes
> >>>> checking pthread.h presence... yes
> >>>> checking for pthread.h... yes
> >>>> checking ucontext.h usability... yes
> >>>> checking ucontext.h presence... yes
> >>>> checking for ucontext.h... yes
> >>>> checking intrinsics.h usability... no
> >>>> checking intrinsics.h presence... no
> >>>> checking for intrinsics.h... no
> >>>> checking for rlim_t... yes
> >>>> checking size of rlim_t... 8
> >>>> checking for size_t... yes
> >>>> checking for struct stat.st_blksize... yes
> >>>> checking for struct stat.st_blocks... yes
> >>>> checking for struct stat.st_rdev... yes
> >>>> checking for uid_t in sys/types.h... (cached) yes
> >>>> checking type of array argument to getgroups... gid_t
> >>>> checking return type of signal handlers... void
> >>>> checking for working alloca.h... yes
> >>>> checking for alloca... yes
> >>>> checking for working memcmp... yes
> >>>> checking for _LARGEFILE_SOURCE value needed for large files... 1
> >>>> checking for ftello... yes
> >>>> checking for dup2... yes
> >>>> checking for memmove... yes
> >>>> checking for strcasecmp... yes
> >>>> checking for strncasecmp... yes
> >>>> checking for strerror... yes
> >>>> checking for strftime... yes
> >>>> checking for strchr... yes
> >>>> checking for strstr... yes
> >>>> checking for strtoul... yes
> >>>> checking for crypt... yes
> >>>> checking for flock... yes
> >>>> checking for vsnprintf... yes
> >>>> checking for isnan... yes
> >>>> checking for finite... yes
> >>>> checking for isinf... yes
> >>>> checking for hypot... yes
> >>>> checking for acosh... yes
> >>>> checking for erf... yes
> >>>> checking for fmod... yes
> >>>> checking for killpg... yes
> >>>> checking for wait4... yes
> >>>> checking for waitpid... yes
> >>>> checking for syscall... yes
> >>>> checking for chroot... yes
> >>>> checking for fsync... yes
> >>>> checking for getcwd... yes
> >>>> checking for eaccess... no
> >>>> checking for truncate... yes
> >>>> checking for chsize... no
> >>>> checking for times... yes
> >>>> checking for utimes... yes
> >>>> checking for fcntl... yes
> >>>> checking for lockf... yes
> >>>> checking for lstat... yes
> >>>> checking for symlink... yes
> >>>> checking for link... yes
> >>>> checking for readlink... yes
> >>>> checking for setitimer... yes
> >>>> checking for setruid... no
> >>>> checking for seteuid... yes
> >>>> checking for setreuid... yes
> >>>> checking for setresuid... yes
> >>>> checking for setproctitle... no
> >>>> checking for setrgid... no
> >>>> checking for setegid... yes
> >>>> checking for setregid... yes
> >>>> checking for setresgid... yes
> >>>> checking for issetugid... no
> >>>> checking for pause... yes
> >>>> checking for lchown... yes
> >>>> checking for lchmod... no
> >>>> checking for getpgrp... yes
> >>>> checking for setpgrp... yes
> >>>> checking for getpgid... yes
> >>>> checking for setpgid... yes
> >>>> checking for initgroups... yes
> >>>> checking for getgroups... yes
> >>>> checking for setgroups... yes
> >>>> checking for getpriority... yes
> >>>> checking for getrlimit... yes
> >>>> checking for setrlimit... yes
> >>>> checking for sysconf... yes
> >>>> checking for dlopen... no
> >>>> checking for sigprocmask... yes
> >>>> checking for sigaction... yes
> >>>> checking for _setjmp... yes
> >>>> checking for setsid... yes
> >>>> checking for telldir... yes
> >>>> checking for seekdir... yes
> >>>> checking for fchmod... yes
> >>>> checking for mktime... yes
> >>>> checking for timegm... yes
> >>>> checking for cosh... yes
> >>>> checking for sinh... yes
> >>>> checking for tanh... yes
> >>>> checking for setuid... yes
> >>>> checking for setgid... yes
> >>>> checking for setenv... yes
> >>>> checking for unsetenv... yes
> >>>> checking whether struct tm is in sys/time.h or time.h... time.h
> >>>> checking for struct tm.tm_zone... yes
> >>>> checking for struct tm.tm_gmtoff... yes
> >>>> checking for external int daylight... yes
> >>>> checking for negative time_t for gmtime(3)... yes
> >>>> checking...
>
> >>>> read more »
>
> >>> Bump - please - anybody? Help?
>
> >> The only obvious thing that I see is
>
> >> gcc -shared -rdynamic -Wl,-export-dynamic -L'../..' -o ../../.ext/x86_64-linux/bigdecimal.so bigdecimal.o -lcrypt -lm -lc
> >> /usr/bin/ld: /opt/usr/bin/../lib/gcc/x86_64-redhat-linux/
> >> 3.4.6/../../../../lib64/libm.a(k_standard.o): relocation R_X86_64_32S
> >> against `a local symbol' can not be used when making a shared object;
> >> recompile with -fPIC
>
> >> It looks like some kind of incompatibility between a system library and bigdecimal. Try taking the '-fPIC' off of "CFLAGS" in your Makefiles and see if that helps.
>
> >> I do know that Ruby 1.8.6 compiles, etc., flawlessly on my Gentoo AMD64 system, but I have gcc 4.1.2, not 3.4.6. You could also try an upgrade to RHEL 5 to see if it goes away.
>
> > Thanks for the info - actually that flag though wasn't on. It's
> > weird because it compiles fine on an older RHEL4 box but not a newer
> > one... It's unusual that's the case.
>
> Are you saying that it works on one RHEL4/x86_64 box and not the other,
> or that it works on an RHEL4/x86(32) box but not on an RHEL/x86_64 box?
>
> I'll be loading CentOS 5 on an x64 system later this week, and it comes
> with Ruby 1.8.5, so I know at least that works. You could try getting
> the source RPMs for Ruby and its friends from the RHEL 5 source
> repository and doing an "rpmbuild" ... that would tell you if there are
> special hacks you need to do to bring Ruby up on your box.
Works on one both x86_64, both RHEL4, the one more current is where
the build breaks. Go figure eh...
Well 1.8.5 for CentOS 4 worked like a charm. Argh! Go figure...