How to solve the relationship between gcc and glibc when building cross compiler toolchain?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Recently, I've tried to build a cross compiler toolchain for MIPS architecture.

Firstly, I've exported these variables to environment settings and created some folders:

export PRJROOT=$(pwd)
export TARGET=mips-linux
export PREFIX=$PRJROOT/tools
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PREFIX/bin:$PATH

mkdir -p kernel source tools
mkdir -p build-tools/binutils
mkdir -p build-tools/gcc-bootstrap
mkdir -p build-tools/gcc
mkdir -p build-tools/glibc
mkdir -p build-tools/gdb
Secondly, I've installed the pre-required libraries:

sudo apt-get install build-essential
sudo apt-get install autoconf libtool m4 bison flex texinfo
sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev
sudo apt-get install gawk
Then, I've build the binutils-2.25 with the following command:

$PRJROOT/source/binutils-2.25/configure \
    --target=$TARGET \
    --prefix=$PREFIX \
    --disable-werror
make -j 4
make install
But when building the bootstrap gcc with the following configuration and command, it got a error message:

$PRJROOT/source/gcc-5.1.0/configure \
    --target=$TARGET \
    --prefix=$PREFIX \
    --enable-shared \
    --enable-languages=c \
    --without-headers \
    --with-gnu-ld \
    --with-gnu-as \
    --disable-decimal-float \
    --disable-libgomp \
    --disable-libmudflap \
    --disable-libssp \
    --disable-threads \
    --disable-multilib \
    --disable-libquadmath \
    --disable-libatomic \
    --with-newlib
The gcc-bootstrap error message is:

.../tools/mips-linux/bin/ld: cannot find crti.o
.../tools/mips-linux/bin/ld: cannot find -lc
.../tools/mips-linux/bin/ld: cannot find crtn.o
collect2: error: ld return 1
make[2]: *** [libgcc_s.so] error 1
Once I change the configuration --enable-shared to --disable-shared, the gcc-bootstrap will build successfully.

And then, when I build glibc using the previous gcc-bootstrap with the following command, it get a error message:

$PRJROOT/source/glibc-2.16.0/configure \
    --host=$TARGET \
    --build=$($PRJROOT/source/glibc-2.16.0/scripts/config.guess) \
    --prefix=$PREFIX \
    --with-headers=$TARGET_PREFIX/include \
    --with-binutils=$TARGET_PREFIX/bin \
    --enable-add-ons \
    --with-tls \
    --disable-profile \
    libc_cv_forced_unwind=yes \
    libc_cv_ctors_header=yes \
    libc_cv_c_cleanup=yes
The glibc error message is:

.../tools/mips-linux/bin/ld: cannot find -lgcc_s
collect2: error: ld returned 1 exit status
As shown above, the gcc-bootstrap compilation with configuration --enable-shared in order to build libgcc_s.so needs the file such as crti.o and crtn.o that glibc builds. Once changing to --disable-shared, the gcc-bootstrap build successfully and will not build libgcc_s.so file. However, when building the glibc, it needs libgcc_s.so file to link. Can anyone tell me how to solve the relationship between gcc and glibc as above?




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux