3

Since several versions of GCC and Ubuntu I am experiencing annoying issues with paths and naming of several header and object files that are necessary for the installation of GCC.

Description: After installing ubuntu (e.g. in my case 12.04) and installing all prerequisites of the gcc, I run the following commands:

sudo mkdir /usr/local/stow/gcc-4.8.0
./configure --prefix /usr/local/stow/gcc-4.8.0
make
sudo make install

For the sake of completeness, the rest of the installation procedure:

cd /usr/local/stow
sudo stow -t /usr/local/ gcc-4.8.0
gcc -v

However, this simple and proper way of installing gcc has some issues during the 'make' step with the following error messages:

1.) The problem with 'stubs.h'

/usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory

which can be fixed with the following commands added to ~/.bashrc:

if [ -z "$CPATH"]; then
        export CPATH="/usr/include/i386-linux-gnu"
else
        export CPATH=$CPATH:"/usr/include/i386-linux-gnu"
fi

2.) The problem with 'crti.o', 'crtn.o', and 'crt1.o'

/usr/bin/ld: cannot find crti.o: No such file or directory
/usr/bin/ld: cannot find crtn.o: No such file or directory
/usr/bin/ld: cannot find crt1.o: No such file or directory

which can be fixed with the very ugly solution:

sudo ln -s /usr/lib/i386-linux-gnu/crti.o /usr/lib/i386-linux-gnu/crtn.o /usr/lib/i386-linux-gnu/crt1.o /usr/lib

since - and I don't know why - the following commands do not solve the problem during linking steps of 'sudo make install'

if [ -z "$LIBRARY_PATH"]; then
    export LIBRARY_PATH="/usr/lib/${multiarch}"
else
    export LIBRARY_PATH=$LIBRARY_PATH:"/usr/lib/${multiarch}"
fi

if [ -z "$LD_LIBRARY_PATH"]; then
    export LD_LIBRARY_PATH="/usr/lib/${multiarch}"
else
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"/usr/lib/${multiarch}"
fi

(With these solutions I could compile GCC-4.7.2 on Ubuntu 12.04. - I have still issues compiling GCC-4.8.0 on Ubuntu 12.04, but that's different topic.)

My questions are: Does anybody know the reason/background that we have these issues? Does anybody know a proper solution? (With "proper solution" I mean a solution that does not require setting environment variables or symbolic linking libraries to different directories. To me these kind of changes are ugly, since they require changes to the system that one may not be able to trace back or redo.)

sema
  • 532
  • 7
  • 23

2 Answers2

3

In the root folder of your GCC source execute ./contrib/download_prerequisites script.

Daniel Sokolowski
  • 11,982
  • 4
  • 69
  • 55
2

These are the issues i encountered while compiling GCC 4.8.0 on Ubuntu 12.04 with solutions.

This might help you.

Compilation guide for compiling GCC 4.8 on ubuntu 12.04

ERROR 1

configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
their locations.  Source code for these libraries can be found at
their respective hosting sites as well as at
ftp://gcc.gnu.org/pub/gcc/infrastructure/.  See also
http://gcc.gnu.org/install/prerequisites.html for additional info.  If
you obtained GMP, MPFR and/or MPC from a vendor distribution package,
make sure that you have installed both the libraries and the header
files.  They may be located in separate packages.

SOLUTION

  1. Download and install gmp version >=4.3.2 package because mpc needs higher version
    • download the source code from gmplib.org
    • compile the source code and install
    • while compiling gmp see ERROR 2 for help
    • Installed gmp version 5.1.1
  2. Download and install mpfr package
    • Installed mpfr version 3.1.2
  3. Download and install mpc package
    • Installed mpc version 1.0

Download the packages from http://ftp.gnu.org


ERROR 2

Error while compiling gmp library

checking for suitable m4... configure: error: No usable m4 in $PATH or /usr/5bin

SOLUTION

sudo apt-get install m4 

http://ubuntuforums.org/showthread.php?t=850491


ERROR 3

Cannot find g++ compiler

I got this error because I installed the OS recently and had not installed the compilers.

SOLUTION

sudo apt-get install build-essential

This installs all the standard build essential software


ERROR 4

checking for i686-pc-linux-gnu-gcc... /home/suhastheju/projects/gcc/gcc-4.8.0/host-i686-pc-linux-gnu/gcc/xgcc -B/home/suhastheju/projects/gcc/gcc-4.8.0/host-i686-pc-linux-gnu/gcc/ -B/usr/local/i686-pc-linux-gnu/bin/ -B/usr/local/i686-pc-linux-gnu/lib/ -isystem /usr/local/i686-pc-linux-gnu/include -isystem /usr/local/i686-pc-linux-gnu/sys-include   
checking for suffix of object files... configure: error: in `/home/suhastheju/projects/gcc/gcc-4.8.0/i686-pc-linux-gnu/libgcc':
configure: error: cannot compute suffix of object files: cannot compile
See `config.log' for more details.
make[2]: *** [configure-stage1-target-libgcc] Error 1
make[2]: Leaving directory `/home/suhastheju/projects/gcc/gcc-4.8.0'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/home/suhastheju/projects/gcc/gcc-4.8.0'
make: *** [all] Error 2

SOLUTION

Though gcc documentation specify , that , we can provide the path of gmp and mpfr installtion through –with-gmp and –with-mpfr flag , but unfortunately , i tried to give the path but it didnt work.

I am not in position to say final word about , this , whether it is a bug in build script or something else , but bellow is the solution of the problem.

while building , add gmp and mpfr installation path in LD_LIBRARY_PATH environment variable. Do as follows export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

If you have the libraries in different path, add the path where libraries are present


ERROR 5

libbackend.a(tree-vect-data-refs.o):tree-vect-data-refs.c:(.text+0x87da): more undefined references to `vector_type_mode(tree_node const*)' follow
collect2: error: ld returned 1 exit status
make[3]: *** [cc1] Error 1
make[3]: Leaving directory `/home/suhastheju/projects/gcc/gcc-4.8.0/host-i686-pc-linux-gnu/gcc'
make[2]: *** [all-stage2-gcc] Error 2
make[2]: Leaving directory `/home/suhastheju/projects/gcc/gcc-4.8.0'
make[1]: *** [stage2-bubble] Error 2
make[1]: Leaving directory `/home/suhastheju/projects/gcc/gcc-4.8.0'
make: *** [all] Error 2

SOLUTION

recompiled the source code from begining, It worked magically

make clean all

ERROR 6

/home/suhastheju/projects/gcc/gcc-4.8.0/host-i686-pc-linux-gnu/gcc/../.././gcc/gcov.c:416: undefined reference to `gcc_init_libintl()'
collect2: ld returned 1 exit status
make[3]: *** [gcov] Error 1
make[3]: Leaving directory `/home/suhastheju/projects/gcc/gcc-4.8.0/host-i686-pc-linux-gnu/gcc'

SOLUTION

Added -I/usr/include

Ajedi32
  • 45,670
  • 22
  • 127
  • 172
77H3jjuu
  • 346
  • 3
  • 10
  • The errors described in your answer are due to unsatisfied prerequisites and as I mentioned I have already installed that. Hence, your answer does not answer my question. By simply having a look to the README, one can see which packages need to be installed: http://gcc.gnu.org/install/prerequisites.html – sema Apr 10 '13 at 06:58