This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Can't build correctly working crosscompiler with 4.3.0. 4.2.1 worked like charm


Ok, I give up.

I killed many hours trying to build a cross-compiling
x86_64-linux-uclibc-gcc, version 4.3.0.

After many "WTF?" moments I decided to go back and try
to build a cross-compiler which I already have,
just older version: I decided to build i486 one,
not x86_64.

Because I already have i486-linux-uclibc-gcc version 4.2.1
and it works.

I unpacked and built i486-linux-uclibc-gcc version 4.3.0
with absolutely the same configure and make command lines,
and it does not work. Specifically, it seems to mess up
paths:

i486-linux-uclibc-gcc: error trying to exec 'cc1': execvp: No such file or directory

stracing gcc invocation reveals typical "..bin/../lib/something/../../../../../something-else/.."
stuff, but this time, it definitely fails to pick up cc1.

(See below for strace comparison between 4.2.1 and 4.3.0)

Yeah, yeah, I saw it with x86_64-linux-uclibc-gcc too
and was able to overcome it with even more hacks and
options in configure, but it won't stop there!
It will use wrong as and/or ld; then it will also try
to link wrong crtXXXXX.o files which do not exist!

So I won't try to fix that now - instead, let's concentrate
on "how in hell? it was working before!"

Well, hrm.... last sanity check:

I remove i486-linux-uclibc-gcc version 4.2.1, unpack
fresh 4.2.1, build it with the very same configure and
make options and IT WORKS!

So, something definitely is changed incompatibly between 4.2.1 and 4.3.0

Help...


STATIC=/usr/app/gcc-4.3.0-i486-linux-uclibc

"configure" invocation:

../gcc-4.3.0/configure \
--prefix=$STATIC                        \
--exec-prefix=$STATIC                   \
--bindir=/usr/bin                       \
--sbindir=/usr/sbin                     \
--libexecdir=$STATIC/libexec            \
--datadir=$STATIC/share                 \
--sysconfdir=/etc                       \
--sharedstatedir=$STATIC/var/com        \
--localstatedir=$STATIC/var             \
--libdir=/usr/lib                       \
--includedir=/usr/include               \
--infodir=/usr/info                     \
--mandir=/usr/man                       \
\
--with-slibdir=$STATIC/lib                      \
--disable-shared                                \
--with-local-prefix=/usr/local                  \
--with-gxx-include-dir=$STATIC/include/g++-v3   \
--enable-languages="c,c++"                      \
--disable-nls                                   \
\
--build=i386-pc-linux-gnu                       \
--host=i386-pc-linux-gnu                        \
--target=i486-linux-uclibc                      \
\
--disable-__cxa_atexit                          \
--enable-target-optspace                        \
--with-gnu-ld                                   \
--disable-threads                               \
--disable-multilib                              \
--without-headers                               \

"make" invocation:

make all-gcc

"make install" invocation:

make \
prefix=$STATIC                          \
exec-prefix=$STATIC                     \
bindir=$STATIC/bin                      \
sbindir=$STATIC/sbin                    \
libexecdir=$STATIC/libexec              \
datadir=$STATIC/share                   \
sysconfdir=$STATIC/var/etc              \
sharedstatedir=$STATIC/var/com          \
localstatedir=$STATIC/var               \
libdir=$STATIC/lib                      \
includedir=$STATIC/include              \
infodir=$STATIC/info                    \
mandir=$STATIC/man                      \
\
install-gcc

gcc 4.3.0 fails to find cc1:

30816 stat64("/.share/usr/app/gcc-4.3.0-i486-linux-uclibc/bin/../app/gcc-4.3.0-i486-linux-uclibc/libexec/gcc/i486-linux-uclibc/4.3.0/cc1", 0xffde613c) = -1 ENOENT (No such file or directory)
30816 stat64("/.share/usr/app/gcc-4.3.0-i486-linux-uclibc/bin/../app/gcc-4.3.0-i486-linux-uclibc/libexec/gcc/cc1", 0xffde613c) = -1 ENOENT (No such file or directory)
30816 stat64("/.share/usr/app/gcc-4.3.0-i486-linux-uclibc/bin/../lib/gcc/i486-linux-uclibc/4.3.0/../../../../../i486-linux-uclibc/bin/i486-linux-uclibc/4.3.0/cc1", 0xffde613c) = -1 ENOENT (No such file or directory)
30816 stat64("/.share/usr/app/gcc-4.3.0-i486-linux-uclibc/bin/../lib/gcc/i486-linux-uclibc/4.3.0/../../../../../i486-linux-uclibc/bin/cc1", 0xffde613c) = -1 ENOENT (No such file or directory)
30816 vfork()                           = 30817
30817 execve("/root/bin/cc1", ["cc1", "-quiet", "-Iinclude", "-Ilibbb", "-I/.1/usr/srcdevel/bbox/fix/busy"..., "-iprefix", "/.share/usr/app/gcc-4.3.0-i486-l"..., "-D_GNU_SOURCE", "-DNDEBUG", "-D_LARGEFILE_SOURCE", "-D_LARGEFILE64_SOURCE", "-D_FILE_OFFSET_BITS=64", "-DBB_VER=KBUILD_STR(1.11.0.svn)", "-DBB_BT=AUTOCONF_TIMESTAMP", "-DKBUILD_STR(s)=#s", "-DKBUILD_BASENAME=KBUILD_STR(app"..., ...], [/* 35 vars */]) = -1 ENOENT (No such file or directory)
30817 execve("/bin/cc1", ["cc1", "-quiet", "-Iinclude", "-Ilibbb", "-I/.1/usr/srcdevel/bbox/fix/busy"..., "-iprefix", "/.share/usr/app/gcc-4.3.0-i486-l"..., "-D_GNU_SOURCE", "-DNDEBUG", "-D_LARGEFILE_SOURCE", "-D_LARGEFILE64_SOURCE", "-D_FILE_OFFSET_BITS=64", "-DBB_VER=KBUILD_STR(1.11.0.svn)", "-DBB_BT=AUTOCONF_TIMESTAMP", "-DKBUILD_STR(s)=#s", "-DKBUILD_BASENAME=KBUILD_STR(app"..., ...], [/* 35 vars */]) = -1 ENOENT (No such file or directory)
30817 execve("/usr/bin/cc1", ["cc1", "-quiet", "-Iinclude", "-Ilibbb", "-I/.1/usr/srcdevel/bbox/fix/busy"..., "-iprefix", "/.share/usr/app/gcc-4.3.0-i486-l"..., "-D_GNU_SOURCE", "-DNDEBUG", "-D_LARGEFILE_SOURCE", "-D_LARGEFILE64_SOURCE", "-D_FILE_OFFSET_BITS=64", "-DBB_VER=KBUILD_STR(1.11.0.svn)", "-DBB_BT=AUTOCONF_TIMESTAMP", "-DKBUILD_STR(s)=#s", "-DKBUILD_BASENAME=KBUILD_STR(app"..., ...], [/* 35 vars */]) = -1 ENOENT (No such file or directory)

gcc 4.2.1 successfully finds cc1:

30862 stat64("/.share/usr/app/gcc-4.2.1-i486-linux-uclibc/bin/../app/gcc-4.2.1-i486-linux-uclibc/libexec/gcc/i486-linux-uclibc/4.2.1/cc1", 0xffae663c) = -1 ENOENT (No such file or directory)
30862 stat64("/.share/usr/app/gcc-4.2.1-i486-linux-uclibc/bin/../app/gcc-4.2.1-i486-linux-uclibc/libexec/gcc/cc1", 0xffae663c) = -1 ENOENT (No such file or directory)
30862 stat64("/usr/app/gcc-4.2.1-i486-linux-uclibc/libexec/gcc/i486-linux-uclibc/4.2.1/cc1", {st_mode=S_IFREG|0755, st_size=4420187, ...}) = 0
30862 access("/usr/app/gcc-4.2.1-i486-linux-uclibc/libexec/gcc/i486-linux-uclibc/4.2.1/cc1", X_OK) = 0
30862 vfork()                           = 30863
30863 execve("/usr/app/gcc-4.2.1-i486-linux-uclibc/libexec/gcc/i486-linux-uclibc/4.2.1/cc1", ["/usr/app/gcc-4.2.1-i486-linux-uc"..., "-quiet", "-Iinclude", "-Ilibbb", "-I/.1/usr/srcdevel/bbox/fix/busy"..., "-iprefix", "/.share/usr/app/gcc-4.2.1-i486-l"..., "-D_GNU_SOURCE", "-DNDEBUG", "-D_LARGEFILE_SOURCE", "-D_LARGEFILE64_SOURCE", "-D_FILE_OFFSET_BITS=64", "-DBB_VER=KBUILD_STR(1.11.0.svn)", "-DBB_BT=AUTOCONF_TIMESTAMP", "-DKBUILD_STR(s)=#s", "-DKBUILD_BASENAME=KBUILD_STR(app"..., ...], [/* 35 vars */]) = 0


both are produced by the following command (only i486-linux-uclibc-gcc
is different):

strace -f -o strace.log \
i486-linux-uclibc-gcc -Wp,-MD,applets/.applets.o.d    -Iinclude -Ilibbb  -I/.1/usr/srcdevel/bbox/fix/busybox.t8/libbb -include include/aut
oconf.h -D_GNU_SOURCE -DNDEBUG -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D"BB_VER=KBUILD_STR(1.11.0.svn)" -DBB_BT=
AUTOCONF_TIMESTAMP                 -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(applets)"  -D"KBUILD_MODNAME=KBUILD_STR(applets)" -c
 -o applets/applets.o applets/applets.c

--
vda


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]