[Rd] R trunk (2.7) build fails with -fpic, needs -fPIC (PR#10372)

Peter Dalgaard p.dalgaard at biostat.ku.dk
Thu Oct 25 00:19:13 CEST 2007


atp at piskorski.com wrote:
> On Linux x86-64 (Ubuntu 6.06), the latest R sources from the
> Subversion trunk fail to build with the following "recompile with
> -fPIC" error:
>
>   $ ./configure --with-x=yes --prefix=$inst_dir --enable-R-shlib --with-tcltk=/usr/lib/tcl8.4 --with-tcl-config=/usr/lib/tcl8.4/tclConfig.sh
>   $ make
>
>   /usr/bin/ld: ../appl/approx.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
>   ../appl/approx.o: could not read symbols: Bad value
>
> This is easy to fix by changing 4 lines in the configure script from
> "-fpic" to -fPIC", as shown in the patch below.
>
> I saw this failure on an Intel x86-64 server, running Ubuntu 6.06:
>
>   $ uname -srvm
>   Linux 2.6.20.4 #1 SMP PREEMPT Sat Mar 31 07:46:01 EDT 2007 x86_64
>
>   $ cat /etc/lsb-release
>   DISTRIB_ID=Ubuntu
>   DISTRIB_RELEASE=6.06
>   DISTRIB_CODENAME=dapper
>   DISTRIB_DESCRIPTION="Ubuntu 6.06.1 LTS"
>
>   $ grep name /proc/cpuinfo
>   model name      :                   Intel(R) Xeon(TM) CPU 3.80GHz
>   model name      :                   Intel(R) Xeon(TM) CPU 3.80GHz
>
>   $ dpkg -l libc6
>   ||/ Name     Version              Description
>   +++-========-====================-=================================================
>   ii  libc6    2.3.6-0ubuntu20.4    GNU C Library: Shared libraries and Timezone data
>
>   $ apt-cache show libc6 | grep Architecture | uniq
>   Architecture: amd64
>
> Here's a patch which fixes the problem:
>
>
> $ svn diff configure
> Index: configure
> ===================================================================
> --- configure	(revision 43265)
> +++ configure	(working copy)
> @@ -32806,7 +32806,7 @@
>        cpicflags="-fPIC"
>        ;;
>      *)
> -      cpicflags="-fpic"
> +      cpicflags="-fPIC"
>        ;;
>    esac
>    shlib_ldflags="-shared"
> @@ -32817,7 +32817,7 @@
>        fpicflags="-fPIC"
>        ;;
>      *)
> -      fpicflags="-fpic"
> +      fpicflags="-fPIC"
>        ;;
>    esac
>  fi
> @@ -32827,7 +32827,7 @@
>        cxxpicflags="-fPIC"
>        ;;
>      *)
> -      cxxpicflags="-fpic"
> +      cxxpicflags="-fPIC"
>        ;;
>    esac
>    shlib_cxxldflags="-shared"
> @@ -47768,7 +47768,7 @@
>        fcpicflags="-fPIC"
>        ;;
>      *)
> -      fcpicflags="-fpic"
> +      fcpicflags="-fPIC"
>        ;;
>    esac
>  fi
>
>   
Fedora 7 seems perfectly happy with -fpic, and that patch looks 
unhealthy (for one thing, you shouldn't mess with that script directly, 
but use autoconf and aclocal on oter source files, for another, you are 
prescribing that -fPIC is to be used for all architectures.

Whic compiler/linker is this?

-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907



More information about the R-devel mailing list