Hi,
I am working through CLFS, although I have not gotten very far. I have
gotten stuck just building the cross compiler (the second build after
cross-compiling eglibc).
I am cross-compiling from an x86 host running Etch (Debian 4.0) to a
MIPS-64 target. I'm following the SVN-20090814 book, with no deviations
intended. I'm stuck on Section 5.15, Cross GCC-4.4.1 - Final. I first
had this problem, then refreshed my book version and restarted, but hit
the same problem again.
It seems a final link step is failing. A big long link command passing
all the .o, followed by errors messages for all the .o that they are
incompatible API. I checked a few and file tells me they are 64-bit
MSB, MIPS-III ELF files, which is what I expect.
I note in the link command is flag "-mabi=32" which doesn't seem right.
Maybe the final build is misconfigured for 32 so it can't work with
the 64 libs created in previous step? There are references to
directories named 32 also which further suggests same. But I don't know
how to track down the error. The configure step in the book clearly
says "--with-abi=64"
Some environment vars:
$ echo $CLFS
/mnt/hda4/clfs
$ echo $CLFS_HOST
i486-cross-linux-gnu
$ echo $CLFS_TARGET
mips64-unknown-linux-gnu
$ echo $BUILD32
$ echo $BUILD64
-mabi=64
Attached the build output with some stuff removed. This is not from
clean, so it gets very quickly to the link step where it fails every time.
Comments or suggestions? Questions for me to followup?
Any help will be greatly appreciated!
Thanks,
Mike
c...@it-server:/mnt/hda4/clfs/sources/gcc-build$ make AS_FOR_TARGET="${C
LFS_TARGET}-as" \
> LD_FOR_TARGET="${CLFS_TARGET}-ld"
make[1]: Entering directory `/mnt/hda4/clfs/sources/gcc-build'
make[2]: Entering directory `/mnt/hda4/clfs/sources/gcc-build/libiberty'
make[3]: Entering directory
`/mnt/hda4/clfs/sources/gcc-build/libiberty/testsuite'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory
`/mnt/hda4/clfs/sources/gcc-build/libiberty/testsuite'
make[2]: Leaving directory `/mnt/hda4/clfs/sources/gcc-build/libiberty'
make[2]: Entering directory `/mnt/hda4/clfs/sources/gcc-build/fixincludes'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/mnt/hda4/clfs/sources/gcc-build/fixincludes'
make[2]: Entering directory `/mnt/hda4/clfs/sources/gcc-build/intl'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/mnt/hda4/clfs/sources/gcc-build/intl'
make[2]: Entering directory
`/mnt/hda4/clfs/sources/gcc-build/build-i486-cross-linux-gnu/libiberty'
make[3]: Entering directory
`/mnt/hda4/clfs/sources/gcc-build/build-i486-cross-linux-gnu/libiberty/testsuite'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory
`/mnt/hda4/clfs/sources/gcc-build/build-i486-cross-linux-gnu/libiberty/testsuite'
make[2]: Leaving directory
`/mnt/hda4/clfs/sources/gcc-build/build-i486-cross-linux-gnu/libiberty'
make[2]: Entering directory
`/mnt/hda4/clfs/sources/gcc-build/build-i486-cross-linux-gnu/fixincludes'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory
`/mnt/hda4/clfs/sources/gcc-build/build-i486-cross-linux-gnu/fixincludes'
make[2]: Entering directory `/mnt/hda4/clfs/sources/gcc-build/libcpp'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/mnt/hda4/clfs/sources/gcc-build/libcpp'
make[2]: Entering directory `/mnt/hda4/clfs/sources/gcc-build/libdecnumber'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/mnt/hda4/clfs/sources/gcc-build/libdecnumber'
make[2]: Entering directory `/mnt/hda4/clfs/sources/gcc-build/gcc'
make[2]: Leaving directory `/mnt/hda4/clfs/sources/gcc-build/gcc'
Checking multilib configuration for libgcc...
make[2]: Entering directory
`/mnt/hda4/clfs/sources/gcc-build/mips64-unknown-linux-gnu/libgcc'
# If this is the top-level multilib, build all the other
# multilibs.
make[3]: Entering directory
`/mnt/hda4/clfs/sources/gcc-build/mips64-unknown-linux-gnu/libgcc'
if [ -z "32 64" ]; then \
true; \
else \
rootpre=`${PWDCMD-pwd}`/; export rootpre; \
srcrootpre=`cd ../../../gcc-4.4.1/libgcc; ${PWDCMD-pwd}`/; export
srcrootpre; \
lib=`echo "${rootpre}" | sed -e 's,^.*/\([^/][^/]*\)/$,\1,'`; \
compiler="/mnt/hda4/clfs/sources/gcc-build/./gcc/xgcc
-B/mnt/hda4/clfs/sources/gcc-build/./gcc/
-B/cross-tools/mips64-unknown-linux-gnu/bin/
-B/cross-tools/mips64-unknown-linux-gnu/lib/ -isystem
/cross-tools/mips64-unknown-linux-gnu/include -isystem
/cross-tools/mips64-unknown-linux-gnu/sys-include"; \
for i in `${compiler} --print-multi-lib 2>/dev/null`; do \
dir=`echo $i | sed -e 's/;.*$//'`; \
if [ "${dir}" = "." ]; then \
true; \
else \
if [ -d ../${dir}/${lib} ]; then \
flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
if (cd ../${dir}/${lib}; make
"AR=/cross-tools/mips64-unknown-linux-gnu/bin/ar" "AR_FLAGS=rc"
"CC=/mnt/hda4/clfs/sources/gcc-build/./gcc/xgcc
-B/mnt/hda4/clfs/sources/gcc-build/./gcc/
-B/cross-tools/mips64-unknown-linux-gnu/bin/
-B/cross-tools/mips64-unknown-linux-gnu/lib/ -isystem
/cross-tools/mips64-unknown-linux-gnu/include -isystem
/cross-tools/mips64-unknown-linux-gnu/sys-include" "CFLAGS=-g -O2
-minterlink-mips16" "DESTDIR=" "EXTRA_OFILES=" "HDEFINES="
"INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644"
"INSTALL_PROGRAM=/usr/bin/install -c" "LDFLAGS=" "LOADLIBES="
"RANLIB=/cross-tools/mips64-unknown-linux-gnu/bin/ranlib" "SHELL=/bin/sh"
"prefix=/cross-tools" "exec_prefix=/cross-tools" "libdir=/cross-tools/lib"
"libsubdir=/cross-tools/lib/gcc/mips64-unknown-linux-gnu/4.4.1"
"tooldir=/cross-tools/mips64-unknown-linux-gnu" \
CFLAGS="-g -O2 -minterlink-mips16 ${flags}" \
CCASFLAGS=" ${flags}" \
FCFLAGS=" ${flags}" \
FFLAGS=" ${flags}" \
ADAFLAGS=" ${flags}" \
prefix="/cross-tools" \
exec_prefix="/cross-tools" \
GCJFLAGS=" ${flags}" \
CXXFLAGS="-g -O2 -D_GNU_SOURCE
-minterlink-mips16 ${flags}" \
LIBCFLAGS="-g -O2 -minterlink-mips16
${flags}" \
LIBCXXFLAGS="-g -O2 -D_GNU_SOURCE
-minterlink-mips16 -fno-implicit-templates ${flags}" \
LDFLAGS=" ${flags}" \
MULTIFLAGS="${flags}" \
DESTDIR="" \
INSTALL="/usr/bin/install -c" \
INSTALL_DATA="/usr/bin/install -c -m 644" \
INSTALL_PROGRAM="/usr/bin/install -c" \
INSTALL_SCRIPT="/usr/bin/install -c" \
all); then \
true; \
else \
exit 1; \
fi; \
else true; \
fi; \
fi; \
done; \
fi
make[4]: Entering directory
`/mnt/hda4/clfs/sources/gcc-build/mips64-unknown-linux-gnu/32/libgcc'
# If this is the top-level multilib, build all the other
# multilibs.
# Early copyback; see "all" above for the rationale. The
# early copy is necessary so that the gcc -B options find
# the right startup files when linking shared libgcc.
/bin/sh ../../../../gcc-4.4.1/libgcc/../mkinstalldirs ../../.././gcc/32
parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o";
\
for file in $parts; do \
rm -f ../../.././gcc/32/$file; \
/usr/bin/install -c -m 644 $file ../../.././gcc/32/; \
done
# @multilib_flags@ is still needed because this may use
# /mnt/hda4/clfs/sources/gcc-build/./gcc/xgcc
-B/mnt/hda4/clfs/sources/gcc-build/./gcc/
-B/cross-tools/mips64-unknown-linux-gnu/bin/
-B/cross-tools/mips64-unknown-linux-gnu/lib/ -isystem
/cross-tools/mips64-unknown-linux-gnu/include -isystem
/cross-tools/mips64-unknown-linux-gnu/sys-include and -O2 -g -O2
-minterlink-mips16 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall
-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual
-Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT
-DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED directly.
# @multilib_dir@ is not really necessary, but sometimes it has
# more uses than just a directory name.
/bin/sh ../../../../gcc-4.4.1/libgcc/../mkinstalldirs 32
/mnt/hda4/clfs/sources/gcc-build/./gcc/xgcc
-B/mnt/hda4/clfs/sources/gcc-build/./gcc/
-B/cross-tools/mips64-unknown-linux-gnu/bin/
-B/cross-tools/mips64-unknown-linux-gnu/lib/ -isystem
/cross-tools/mips64-unknown-linux-gnu/include -isystem
/cross-tools/mips64-unknown-linux-gnu/sys-include -O2 -g -O2
-minterlink-mips16 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall
-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual
-Wold-style-definition -isystem ./include -fPIC -g -DHAVE_GTHR_DEFAULT
-DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -shared -nodefaultlibs
-Wl,--soname=libgcc_s.so.1 -Wl,--version-script=libgcc.map -o
32/libgcc_s.so.1.tmp -g -O2 -minterlink-mips16 -mabi=32 -B./ _m16addsf3_s.o
_m16subsf3_s.o _m16mulsf3_s.o _m16divsf3_s.o _m16eqsf2_s.o _m16nesf2_s.o
_m16gtsf2_s.o _m16gesf2_s.o _m16lesf2_s.o _m16ltsf2_s.o _m16unordsf2_s.o
_m16fltsisf_s.o _m16fix_truncsfsi_s.o _m16fltunsisf_s.o _m16adddf3_s.o
_m16subdf3_s.o _m16muldf3_s.o _m16divdf3_s.o _m16extsfdf2_s.o _m16trdfsf2_s.o
_m16eqdf2_s.o _m16nedf2_s.o _m16gtdf2_s.o _m16gedf2_s.o
... and alot more .os deleted...
unwind-sjlj_s.o gthr-gnat_s.o unwind-c_s.o emutls_s.o -lc && rm -f
32/libgcc_s.so && if [ -f 32/libgcc_s.so.1 ]; then mv -f 32/libgcc_s.so.1
32/libgcc_s.so.1.backup; else true; fi && mv 32/libgcc_s.so.1.tmp
32/libgcc_s.so.1 && ln -s libgcc_s.so.1 32/libgcc_s.so
/cross-tools/bin/mips64-unknown-linux-gnu-ld: skipping incompatible
/mnt/hda4/clfs/tools/lib/libc.so when searching for -lc
/cross-tools/bin/mips64-unknown-linux-gnu-ld: /mnt/hda4/clfs/tools/lib/crti.o:
ABI is incompatible with that of the selected emulation
/cross-tools/bin/mips64-unknown-linux-gnu-ld: failed to merge target specific
data of file /mnt/hda4/clfs/tools/lib/crti.o
/cross-tools/bin/mips64-unknown-linux-gnu-ld:
/mnt/hda4/clfs/tools/lib/libc.a(abort.o): ABI is incompatible with that of the
selected emulation
/cross-tools/bin/mips64-unknown-linux-gnu-ld: failed to merge target specific
data of file /mnt/hda4/clfs/tools/lib/libc.a(abort.o)
... alot of error messages deleted ...
/cross-tools/bin/mips64-unknown-linux-gnu-ld:
/mnt/hda4/clfs/tools/lib/libc.a(mpn2ldbl.o): ABI is incompatible with that of
the selected emulation
/cross-tools/bin/mips64-unknown-linux-gnu-ld: failed to merge target specific
data of file /mnt/hda4/clfs/tools/lib/libc.a(mpn2ldbl.o)
/cross-tools/bin/mips64-unknown-linux-gnu-ld: /mnt/hda4/clfs/tools/lib/crtn.o:
ABI is incompatible with that of the selected emulation
/cross-tools/bin/mips64-unknown-linux-gnu-ld: failed to merge target specific
data of file /mnt/hda4/clfs/tools/lib/crtn.o
/mnt/hda4/clfs/tools/lib/libc.a(abort.o): In function `abort':
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:55: relocation truncated to
fit: R_MIPS_GOT_PAGE against `.bss'+8
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:55: relocation truncated to
fit: R_MIPS_GOT_OFST against `.bss'+8
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:55: relocation truncated to
fit: R_MIPS_GOT_OFST against `.bss'+8
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:55: relocation truncated to
fit: R_MIPS_GOT_OFST against `.bss'+8
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:55: relocation truncated to
fit: R_MIPS_CALL16 against `__lll_lock_wait_private'
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:60: relocation truncated to
fit: R_MIPS_GOT_PAGE against `.bss'
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:60: relocation truncated to
fit: R_MIPS_GOT_OFST against `.bss'
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:70: relocation truncated to
fit: R_MIPS_CALL16 against `_IO_flush_all_lockp'
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:95: relocation truncated to
fit: R_MIPS_CALL16 against `memset'
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:107: relocation truncated
to fit: R_MIPS_CALL16 against `__fcloseall'
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:114: additional relocation
overflows omitted from the output
collect2: ld returned 1 exit status
make[4]: *** [libgcc_s.so] Error 1
make[4]: Leaving directory
`/mnt/hda4/clfs/sources/gcc-build/mips64-unknown-linux-gnu/32/libgcc'
make[3]: *** [multi-do] Error 1
make[3]: Leaving directory
`/mnt/hda4/clfs/sources/gcc-build/mips64-unknown-linux-gnu/libgcc'
make[2]: *** [all-multi] Error 2
make[2]: Leaving directory
`/mnt/hda4/clfs/sources/gcc-build/mips64-unknown-linux-gnu/libgcc'
make[1]: *** [all-target-libgcc] Error 2
make[1]: Leaving directory `/mnt/hda4/clfs/sources/gcc-build'
make: *** [all] Error 2
c...@it-server:/mnt/hda4/clfs/sources/gcc-build$
_______________________________________________
Clfs-support mailing list
[email protected]
http://lists.cross-lfs.org/listinfo.cgi/clfs-support-cross-lfs.org