2014-04-08 20:22 GMT+08:00 David Guillen <[email protected]>: > Can you check whether crt1.o and crt1.o exist? And the path where they do > live. > Also it would be interesting to know the exact commandline (check config.log). Do you mean the commanline I build , here is :
The total command list
0 perpare var in env
modify .bashrc
export HOST=x86_64-pc-linux-gnu
export BUILD=$HOST
export TARGET=x86_64-none-linux-gnu
export CROSS_TOOL=/vita/cross-tool
export CROSS_GCC_TMP=/vita/cross-gcc-tmp
export SYSROOT=/vita/sysroot
PATH=$CROSS_TOOL/bin:$CROSS_GCC_TMP/bin:/sbin:/usr/sbin:$PATH
1 build binutilss
cd /vita/
mkdir source build cross-tool cross-gcc-tmp sysroot
cd source/
cp -rf /mnt/hgfs/D/linux/source/* .
cd ..
cd build/
mkdir binutils-build
cd binutils-build/
../binutils-2.23.1/configure --prefix=$CROSS_TOOL --target=$TARGET
--with-sysroot=$SYSROOT
make -j2
make install
Now have ld and so on
modify .basrch and source ~/.bashrc
export AR="$TARGET-ar"
export AS="$TARGET-as"
export RANLIB="$TARGET-ranlib"
export LD="$TARGET-ld"
export STRIP="$TARGET-strip"
2 build freestanding compiler first perpare gmp source
cd /vita/
cd build/
tar -xvf ../source/gcc-4.7.2.tar.bz2
cd gcc-4.7.2/
tar -xvf ../../source/mpfr-3.1.1.tar.bz2
tar -xvf ../../source/mpc-1.0.1.tar.gz
tar -xvf ../../source/gmp-5.0.5.tar.bz2
mv gmp-5.0.5/ gmp
mv mpfr-3.1.1/ mpfr
mv mpc-1.0.1/ mpc
cd ..
mkdir gcc-build1
cd gcc-build1/
../gcc-4.7.2/configure --prefix=$CROSS_GCC_TMP --target=$TARGET
--with-sysroot=$SYSROOT --with-newlib --enable-languages=c
--with-mpfr-include=/vita/build/gcc-4.7.2/mpfr/src
--with-mpfr-lib=/vita/build/gcc-build1/mpfr/.libs --disable-shared
--disable-threads --disable-decimal-float --disable-libquadmath
--disable-libmudflap --disable-libgomp --disable-nls --disable-libssp
--disable-multilib
make -j2
make install
cd /vita/cross-gcc-tmp/
ln -s libgcc.a lib/gcc/x86_64-none-linux-gnu/4.7.2/libgcc_eh.a
now have a cc
modify .bashrc
export CC="$TARGET-gcc"
3 build glibc
cd ..
cd build/
tar -xvf ../source/linux-3.7.4.tar.xz
cd linux-3.7.4/
make mrproper
make ARCH=x86_64 headers_check
make ARCH=x86_64 INSTALL_HDR_PATH=$SYSROOT/usr/ headers_install
cd ..
tar -xvf ../source/glibc-2.15.tar.xz glibc-2.15/
cd glibc-2.15/
../glibc-2.15/configure --prefix=/usr --host=$TARGET
--enable-kernel=3.7.4 --enable-add-ons
--with-headers=$SYSROOT/usr/include libc_cv_forced_unwind=yes
libc_cv_c_cleanup=yes libc_cv_ctors_header=yes
patch -pl < ../../source/glibc-2.15-cpuid.patch
patch -p1 < ../../source/glibc-2.15-s_frexp.patch
make -j2
make install_root=$SYSROOT install
now have glibc crt1.o in $sysroot/usr/lib64/
vita@engine-virtual-machine:/vita$ ls sysroot/usr/lib64/*.o
sysroot/usr/lib64/crt1.o sysroot/usr/lib64/crtn.o sysroot/usr/lib64/Mcrt1.o
sysroot/usr/lib64/crti.o sysroot/usr/lib64/gcrt1.o sysroot/usr/lib64/Scrt1.o
4 build second pass gcc
cd ..
mkdir gcc-build2
cd gcc-build2/
../gcc-4.7.2/configure --prefix=$CROSS_TOOL --target=$TARGET
--with-sysroot=$SYSROOT
--with-mpfr-include=/vita/build/gcc-4.7.2/mpfr/src
--with-mpfr-lib=/vita/build/gcc-build2/mpfr/src/.libs
--enable-languages=c,c++ --enable-threads=posix
attach the config.log
>
> 2014-04-08 14:13 GMT+02:00 Mo Jia <[email protected]>:
>> Try to make a gcc cross compiler ,
>>
>> 0 perpare vars in env
>>
>> export HOST=x86_64-pc-linux-gnu
>> export BUILD=$HOST
>> export TARGET=x86_64-none-linux-gnu
>> export CROSS_TOOL=/vita/cross-tool
>> export CROSS_GCC_TMP=/vita/cross-gcc-tmp
>> export SYSROOT=/vita/sysroot
>> PATH=$CROSS_TOOL/bin:$CROSS_GCC_TMP/bin:/sbin:/usr/sbin:$PATH
>>
>> 1 build binutilss
>>
>> ../binutils-2.23.1/configure --prefix=$CROSS_TOOL \
>> --target=$TARGET --with-sysroot=$SYSROOT
>>
>> build success
>> then add this lines to .bashrc And this want build glibc next use the
>> tools I just build
>>
>> export AR="$TARGET-ar"
>> export AS="$TARGET-as"
>> export RANLIB="$TARGET-ranlib"
>> export LD="$TARGET-ld"
>> export STRIP="$TARGET-strip"
>>
>> 2 build freestanding compiler first perpare gmp source
>>
>> cd gcc-4.7.2/
>> tar -xvf ../../source/mpfr-3.1.1.tar.bz2
>> tar -xvf ../../source/mpc-1.0.1.tar.gz
>> tar -xvf ../../source/gmp-5.0.5.tar.bz2
>> mv gmp-5.0.5/ gmp
>> mv mpfr-3.1.1/ mpfr
>> mv mpc-1.0.1/ mpc
>>
>> then cd to gcc-build1
>>
>> ../gcc-4.7.2/configure --prefix=$CROSS_GCC_TMP --target=$TARGET \
>> --with-sysroot=$SYSROOT --with-newlib --enable-languages=c \
>> --with-mpfr-include=/vita/build/gcc-4.7.2/mpfr/src \
>> --with-mpfr-lib=/vita/build/gcc-build1/mpfr/src/.libs \
>> --disable-shared --disable-threads --disable-decimal-float \
>> --disable-libquadmath --disable-libmudflap --disable-libgomp \
>> --disable-nls --disable-libssp --disable-multilib
>>
>> succss . So add this line the ~/.bashrc (this will use this build
>> gcc to build a second gcc )
>>
>>
>> export CC="$TARGET-gcc"
>>
>> 3 build glibc
>>
>> ../glibc-2.15/configure --prefix=/usr --host=$TARGET \
>> --enable-kernel=3.7.4 --enable-add-ons \
>> --with-headers=$SYSROOT/usr/include\
>> libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes \
>> libc_cv_ctors_header=yes
>>
>> and make and install
>>
>> make install_root=$SYSROOT install
>>
>> after install :
>>
>> vita@engine-virtual-machine:/vita$ ls sysroot/usr/lib64/*.o
>> sysroot/usr/lib64/crt1.o sysroot/usr/lib64/crtn.o
>> sysroot/usr/lib64/Mcrt1.o
>> sysroot/usr/lib64/crti.o sysroot/usr/lib64/gcrt1.o
>> sysroot/usr/lib64/Scrt1.o
>>
>> 4 build second pass gcc , cd to gcc-build2
>>
>> ../gcc-4.7.2/configure --prefix=$CROSS_TOOL --target=$TARGET \
>> --with-sysroot=$SYSROOT \
>> --with-newlib --enable-languages=c,c++ \
>> --with-mpfr-include=/vita/build/gcc-4.7.2/mpfr/src \
>> --with-mpfr-lib=/vita/build/gcc-build2/mpfr/src/.libs \
>> --disable-multilib --enable-threads=posix
>>
>> Here will be error
>>
>> checking build system type... x86_64-unknown-linux-gnu
>> checking host system type... x86_64-unknown-linux-gnu
>> checking target system type... x86_64-none-linux-gnu
>> checking for a BSD-compatible install... /usr/bin/install -c
>> checking whether ln works... yes
>> checking whether ln -s works... yes
>> checking for a sed that does not truncate output... /bin/sed
>> checking for gawk... gawk
>> checking for libitm support... yes
>> checking for gcc... x86_64-none-linux-gnu-gcc
>> checking for C compiler default output file name...
>> configure: error: in `/vita/build/gcc-build2':
>> configure: error: C compiler cannot create executables
>>
>> Then I cd /vita/cross-gcc-tmp/bin The first pass install dir :
>>
>> vita@engine-virtual-machine:/vita/cross-gcc-tmp/bin$
>> ./x86_64-none-linux-gnu-gcc test.c
>> /vita/cross-tool/bin/x86_64-none-linux-gnu-ld: cannot find crt1.o:
>> No such file or directory
>> /vita/cross-tool/bin/x86_64-none-linux-gnu-ld: cannot find crti.o:
>> No such file or directory
>> collect2: error: ld returned 1 exit status
>>
>> (I install bintuils in /vita/cross-tool and install tmp gcc in
>> /vita/cross-gcc-tmp )
>>
>> Here is question :
>> Seem /vita/cross-tool/bin/x86_64-none-linux-gnu-ld can't find crti.o
>> and it don't know the $sysroot/usr/lib64 I already success build
>> So I am wondering the --with-sysroot=$SYSROOT mean to search libs in
>> $SYSROOT, why it can't known ?
>>
>> Any suggestion ?
config.log
Description: Binary data
