This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Looks like Bill's Wiki page gets a few things right that his script doesn't when it comes to building linux toolchains (as Bill freely admits, the script's linux targets are a bit off).
http://billgatliff.com/twiki/bin/view/Crossgcc/BuildGlibC correctly documents how to fix libc.so. Bill's script misses this, but Karim's gets it.
Bill's script uses the following line to make/install glibc:
make all install info install-info 2>&1 | tee make.log
but his wiki page uses
make install_root=${PREFIX}/${TARGET} prefix="" installOne problem with the script's line is that it tries to build info, which fails without the patch http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/manual/stdio.texi.diff?r1=1.126&r2=1.127&cvsroot=glibc
A second problem shared by both is that they fail to install
<gnu/stubs.h>, which causes the 2nd compile of gcc to fail.
This can be fixed by adding the phony target install-other,
or more directly by adding the real target ${PREFIX}/${TARGET}/include/gnu/stubs.h
(or whatever the path is).I'm attaching a patch that illustrates the above and corrects some thinkos I made in my earlier patch. I *still* haven't gotten it to run all the way through with target powerpc-linux, but I'm getting close... - Dan
-- Dan Kegel http://www.kegel.com http://counter.li.org/cgi-bin/runscript/display-person.cgi?user=78045
--- build-crossgcc.sh.old Mon May 19 17:54:52 2003
+++ build-crossgcc.sh Mon May 19 19:30:11 2003
@@ -1,4 +1,5 @@
#!/bin/bash
+set -ex
#
# build-crossgcc.sh
#
@@ -126,6 +127,10 @@
fi
+# Make prefix and tardir absolute
+PREFIX=`cd $PREFIX; pwd`
+TARDIR=`cd $TARDIR; pwd`
+
# test that we have write permissions to the install dir
mkdir -p ${PREFIX}/${TARGET}
touch ${PREFIX}/${TARGET}/test-if-write
@@ -213,6 +218,7 @@
mkdir -p ${PREFIX}/${TARGET}/include
cp -r include/linux ${PREFIX}/${TARGET}/include/linux
cp -r include/asm-${ARCH} ${PREFIX}/${TARGET}/include/asm
+ cp -r include/asm-generic ${PREFIX}/${TARGET}/include/asm-generic
cd ..
;;
@@ -238,6 +244,7 @@
mkdir -p ${PREFIX}/${TARGET}/include
cp -r include/linux ${PREFIX}/${TARGET}/include
cp -r include/asm-${ARCH} ${PREFIX}/${TARGET}/include/asm
+ cp -r include/asm-generic ${PREFIX}/${TARGET}/include/asm-generic
cd ..
;;
@@ -283,7 +290,7 @@
# for these targets, gcc's libgcc2 assumes the presence of some
# header files that we won't have until after glibc or newlib are
- # built. When we throw in --without-headers --without-newlib, the
+ # built. When we throw in --without-headers --with-newlib, the
# configure process throws in a:
#
# TARGET_LIBGCC2_CFLAGS=-Dinhibit_libc
@@ -359,15 +366,28 @@
gunzip -c ${TARDIR}/${GLIBCDISTO}.tar.gz | tar $TARFLAGS -
cd ${GLIBCDISTO}
+
+ # Fix build problem in glibc-2.2.2; patch not needed as of glibc-2.2.5
+ #patch -p1 < ${TARDIR}/glibc-manual-stdin.texi-1.127.patch || /bin/true
+
gunzip -c ${TARDIR}/${GLIBCTHREADSDISTO}.tar.gz | tar $TARFLAGS -
cd ..
mkdir build-glibc; cd build-glibc
+ # Configure with --prefix the way we want it on the target...
CC=${TARGET}-gcc AR=${TARGET}-ar RANLIB=${TARGET}-ranlib \
- ../${GLIBCDISTO}/configure --host=$TARGET --prefix=${PREFIX}/${TARGET} \
+ ../${GLIBCDISTO}/configure --host=$TARGET --prefix=/usr \
--enable-add-ons=linuxthreads --with-headers=${PREFIX}/${TARGET}/include \
- 2>&1 | tee configure.log ;;
+ 2>&1 | tee configure.log
+ # but override prefix when installing so it goes to the right place on the host.
+ make all install ${PREFIX}/${TARGET}/usr/include/gnu/stubs.h install_root=${PREFIX}/${TARGET} 2>&1 | tee make.log
+
+ # Remove absolute paths from libc.so.
+ # FIXME: ought to use sed instead of just assuming we know what's in libc.so
+ mv ${PREFIX}/${TARGET}/usr/lib/libc.so ${PREFIX}/${TARGET}/usr/lib/libc.so.orig
+ echo "GROUP ( libc.so.6 libc_nonshared.a )" > ${PREFIX}/${TARGET}/usr/lib/libc.so
+ ;;
# these targets use newlib
arm-elf | h8300-coff | h8300-hitachi-hms | m68k-coff | m68k-elf | powerpc-eabi | sh-elf | sh-hms)
@@ -380,14 +400,14 @@
../${NEWLIBDISTO}/configure --target=$TARGET --prefix=$PREFIX \
2>&1 | tee configure.log
+ make all install info install-info 2>&1 | tee make.log
esac
-make all install info install-info 2>&1 | tee make.log
cd ..
# test to see if this step passed
-if [ ! -f ${PREFIX}/${TARGET}/lib/libc.a ]; then
+if [ ! -f ${PREFIX}/${TARGET}/usr/lib/libc.a ]; then
echo Building libc failed && exit 1
fi
@@ -404,6 +424,7 @@
mkdir build-gcc; cd build-gcc
../${GCCDISTO}/configure --target=$TARGET --prefix=$PREFIX \
--enable-languages=c,c++ --with-local-prefix=${PREFIX}/${TARGET} \
+ --with-headers=${PREFIX}/${TARGET}/usr/include \
2>&1 | tee configure.log
------ Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |