# Installing 1.8.6 from source on RHEL4 x86\_64

**URL:** <https://www.ruby-forum.com/t/installing-1-8-6-from-source-on-rhel4-x86-64/105011>\
**Category:** Ruby\
**Created:** [May 24, 2007, 10:16pm UTC](https://www.ruby-forum.com/t/installing-1-8-6-from-source-on-rhel4-x86-64/105011 "2007-05-24T22:16:18Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Costas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/97f17d/32.png) [@Costas](https://www.ruby-forum.com/u/Costas)\
**Post date:** [May 24, 2007, 10:16pm UTC](https://www.ruby-forum.com/t/installing-1-8-6-from-source-on-rhel4-x86-64/105011/1 "2007-05-24T22:16:18Z")

</div>

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 on x86\_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 2006 x86\_64 x86\_64 x86\_64 GNU/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 whether getpgrp requires zero arguments… yes  
checking whether setpgrp takes no argument… yes  
checking whether byte ordering is bigendian… no  
checking for an ANSI C-conforming const… yes  
checking whether char is unsigned… no  
checking for inline… inline  
checking for working volatile… yes  
checking whether right shift preserve sign bit… yes  
checking read count field in FILE structures… not found(OK if using  
GNU libc)  
checking read buffer ptr field in FILE structures… \_IO\_read\_ptr  
checking read buffer end field in FILE structures… \_IO\_read\_end  
checking whether need to seek between R/W… no  
checking whether st\_ino is huge… no  
checking whether \_SC\_CLK\_TCK is supported… yes  
checking stack growing direction… -1  
checking whether ELF binaries are produced… yes  
checking whether OS depend dynamic link works… yes  
checking for nroff… /usr/bin/nroff  
config.h unchanged  
configure: creating ./config.status  
config.status: creating Makefile

---

<div class="post-metadata">

**Author:** ![Costas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/97f17d/32.png) [@Costas](https://www.ruby-forum.com/u/Costas)\
**Post date:** [September 25, 2007, 11:03pm UTC](https://www.ruby-forum.com/t/installing-1-8-6-from-source-on-rhel4-x86-64/105011/2 "2007-09-25T23:03:56Z")

</div>

Costas wrote:

> > > > (Nahant Update 4) ) - Linux 2.6.9-42.0.2.ELsmp #1 SMP Thu Aug 17  
> > > > gcc -shared -rdynamic -Wl,-export-dynamic -L’…/…’ -o …/…/.ext/x86\_64-linux/bigdecimal.so bigdecimal.o -lcrypt -lm -lc  
> > > > make: \*\*\* [all] Error 1  
> > > > checking for suffix of executables…  
> > > > checking for bison… bison -y  
> > > > checking for stdlib.h… yes  
> > > > checking for \_FILE\_OFFSET\_BITS value needed for large files… no  
> > > > checking for \_\_int64… no  
> > > > checking size of time\_t… 8  
> > > > checking for RUBY\_EXTERN… no  
> > > > checking for unistd.h… (cached) yes  
> > > > checking sys/syscall.h presence… yes  
> > > > checking sys/time.h usability… yes  
> > > > checking for syscall.h… yes  
> > > > checking utime.h presence… yes  
> > > > checking for sys/mkdev.h… no  
> > > > checking ieeefp.h presence… no  
> > > > checking for rlim\_t… yes  
> > > > checking for working memcmp… yes  
> > > > checking for strtoul… yes  
> > > > checking for killpg… yes  
> > > > checking for utimes… yes  
> > > > checking for setresuid… yes  
> > > > checking for setpgrp… yes  
> > > > checking for sigprocmask… yes  
> > > > checking for tanh… yes
> > 
> > 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.

---

<div class="post-metadata">

**Author:** ![Costas](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/97f17d/32.png) [@Costas](https://www.ruby-forum.com/u/Costas)\
**Post date:** [September 25, 2007, 11:05pm UTC](https://www.ruby-forum.com/t/installing-1-8-6-from-source-on-rhel4-x86-64/105011/3 "2007-09-25T23:05:32Z")

</div>

Costas wrote:

> > recompile with -fPIC  
> > checking build system type…x86\_64-unknown-linux-gnu  
> > checking for gcc option to accept ISO C89… none needed  
> > checking whether ln -s works… yes  
> > checking for inttypes.h… yes  
> > checking size of int… 4  
> > checking for void\*… yes  
> > checking for prototypes… yes  
> > checking for shl\_load in -ldld… no  
> > checking sys/file.h usability… yes  
> > checking for fcntl.h… yes  
> > checking sys/times.h presence… yes  
> > checking grp.h usability… yes  
> > checking direct.h presence… no  
> > checking netinet/in\_systm.h usability… yes  
> > checking for pthread.h… yes  
> > checking for struct stat.st\_blocks… yes  
> > checking for memmove… yes  
> > checking for isnan… yes  
> > checking for chroot… yes  
> > checking for symlink… yes  
> > checking for setregid… yes  
> > checking for getgroups… yes  
> > checking for telldir… yes  
> > checking for unsetenv… yes  
> > 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.
