This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Cross Linux/x86 to Solaris2.10/x86-64 compiler build problem
- From: Alex Bennee <kernel-hacker at bennee dot com>
- To: gcc <gcc-help at gcc dot gnu dot org>
- Cc: binutils <binutils at sourceware dot org>
- Date: Mon, 19 Mar 2007 21:33:01 +0000
- Subject: Cross Linux/x86 to Solaris2.10/x86-64 compiler build problem
Hi,
I'm not sure if this is a binutils problem or something funky in my
configure for gcc. gcc fails to link while building libgcc:
/export/toolchain/gcc-4.1.2.git/host-i686-pc-linux-gnu/gcc/xgcc
-B/export/toolchain/gcc-4.1.2.git/host-i686-pc-linux-gnu/gcc/
-B/export/toolchain/build-install/i686-sun-solaris2.10/bin/
-B/export/toolchain/build-install/i686-sun-solaris2.10/lib/
-isystem /export/toolchain/build-install/i686-sun-solaris2.10/include
-isystem /export/toolchain/build-install/i686-sun-solaris2.10/sys-include -O2 -O2 -g3 -DIN_GCC -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -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/amd64/libgcc.map -o amd64/libgcc_s.so.1.tmp -m64 libgcc/amd64/_muldi3_s.o libgcc/amd64/_negdi2_s.o libgcc/amd64/_lshrdi3_s.o libgcc/amd64/_ashldi3_s.o libgcc/amd64/_ashrdi3_s.o libgcc/amd64/_cmpdi2_s.o libgcc/amd64/_ucmpdi2_s.o libgcc/amd64/_clear_cache_s.o libgcc/amd64/_enable_execute_stack_s.o libgcc/amd64/_trampoline_s.o libgcc/amd64/__main_s.o libgcc/amd64/_absvsi2_s.o libgcc/amd64/_absvdi2_s.o libgcc/amd64/_addvsi3_s.o libgcc/amd64/_addvdi3_s.o libgcc/amd64/_subvsi3_s.o libgcc/amd64/_subvdi3_s.o libgcc/amd64/_mulvsi3_s.o libgcc/amd64/_mulvdi3_s.o libgcc/amd64/_negvsi2_s.o libgcc/amd64/_negvdi2_s.o libgcc/amd64/_ctors_s.o libgcc/amd64/_ffssi2_s.o libgcc/amd64/_ffsdi2_s.o libgcc/amd64/_clz_s.o libgcc/amd64/_clzsi2_s.o libgcc/amd64/_clzdi2_s.o libgcc/amd64/_ctzsi2_s.o libgcc/amd64/_ctzdi2_s.o libgcc/amd64/_popcount_tab_s.o libgcc/amd64/_popcountsi2_s.o libgcc/amd64/_popcountdi2_s.o libgcc/amd64/_paritysi2_s.o libgcc/amd64/_paritydi2_s.o libgcc/amd64/_powisf2_s.o libgcc/amd64/_powidf2_s.o libgcc/amd64/_powixf2_s.o libgcc/amd64/_powitf2_s.o libgcc/amd64/_mulsc3_s.o libgcc/amd64/_muldc3_s.o libgcc/amd64/_mulxc3_s.o libgcc/amd64/_multc3_s.o libgcc/amd64/_divsc3_s.o libgcc/amd64/_divdc3_s.o libgcc/amd64/_divxc3_s.o libgcc/amd64/_divtc3_s.o libgcc/amd64/_fixunssfsi_s.o libgcc/amd64/_fixunsdfsi_s.o libgcc/amd64/_fixunsxfsi_s.o libgcc/amd64/_fixsfdi_s.o libgcc/amd64/_fixunssfdi_s.o libgcc/amd64/_floatdisf_s.o libgcc/amd64/_fixdfdi_s.o libgcc/amd64/_fixunsdfdi_s.o libgcc/amd64/_floatdidf_s.o libgcc/amd64/_fixxfdi_s.o libgcc/amd64/_fixunsxfdi_s.o libgcc/amd64/_floatdixf_s.o libgcc/amd64/_fixtfdi_s.o libgcc/amd64/_fixunstfdi_s.o libgcc/amd64/_floatditf_s.o libgcc/amd64/_divdi3_s.o libgcc/amd64/_moddi3_s.o libgcc/amd64/_udivdi3_s.o libgcc/amd64/_umoddi3_s.o libgcc/amd64/_udiv_w_sdiv_s.o libgcc/amd64/_udivmoddi4_s.o libgcc/amd64/unwind-dw2_s.o libgcc/amd64/unwind-dw2-fde_s.o libgcc/amd64/unwind-sjlj_s.o libgcc/amd64/gthr-gnat_s.o libgcc/amd64/unwind-c_s.o -lc && rm -f amd64/libgcc_s.so && if [ -f amd64/libgcc_s.so.1 ]; then mv -f amd64/libgcc_s.so.1 amd64/libgcc_s.so.1.backup; else true; fi && mv amd64/libgcc_s.so.1.tmp amd64/libgcc_s.so.1 && ln -s libgcc_s.so.1 amd64/libgcc_s.so
/export/toolchain/build-install/bin/i686-sun-solaris2.10-ld: cannot find
-lc
collect2: ld returned 1 exit status
make[3]: *** [amd64/libgcc_s.so] Error 1
make[3]: Leaving directory
`/export/toolchain/gcc-4.1.2.git/host-i686-pc-linux-gnu/gcc'
make[2]: *** [stmp-multilib] Error 2
make[2]: Leaving directory
`/export/toolchain/gcc-4.1.2.git/host-i686-pc-linux-gnu/gcc'
make[1]: *** [all-gcc] Error 2
make[1]: Leaving directory `/export/toolchain/gcc-4.1.2.git'
make: *** [all] Error 2
I've configured gcc with the following:
path=`pwd`
crossrc="$path/.."
host=i686-pc-gnu
target=i686-sun-solaris2.10
prefix=$crosssrc/build-install
sysroot=$crosssrc/sysroot
syslibs=$sysroot/usr/lib
sysincludes=$sysroot/usr/include
./configure -prefix=$prefix --target=$target --with-gnu-as --with-gnu-ld
--with-libs=$syslibs --with-headers=$sysincludes --enable-languages=c,c
++ --with-cpu=opteron
And I'm using the latest binutils CVS as I've been told the linker
already supports this cross-compile option.
strace'ing the build it seems to search a series of options before it
fails:
[pid 4382]
open("/export/toolchain/build-install/i686-sun-solaris2.10/bin/libc.so",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 4382]
open("/export/toolchain/build-install/i686-sun-solaris2.10/bin/libc.a",
O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 4382]
open("/export/toolchain/build-install/i686-sun-solaris2.10/lib/amd64/libc.so", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 4382]
open("/export/toolchain/build-install/i686-sun-solaris2.10/lib/amd64/libc.a", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 4382]
open("/export/toolchain/build-install/lib/../i686-sun-solaris2.10/lib/amd64/libc.so", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 4382]
open("/export/toolchain/build-install/lib/../i686-sun-solaris2.10/lib/amd64/libc.a", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
[pid 4382] open("/lib/64/libc.so", O_RDONLY|O_LARGEFILE) = -1 ENOENT
(No such file or directory)
Are these files that should of been copied over into the build directory
by binutils from the --with-libs I passed it or should they be
referencing sysroot directly.
binutils was configured with:
path=`pwd`
crossrc="$path/.."
host=i686-pc-gnu
target=i686-sun-solaris2.10
prefix=$crosssrc/build-install
sysroot=$crosssrc/sysroot
syslibs=$sysroot/usr/lib
sysincludes=$sysroot/usr/include
./configure -prefix=$prefix --target=$target --with-gnu-as --with-gnu-ld
--with-libs=$syslibs --with-headers=$sysincludes --enable-languages=c,c
++ --with-cpu=opteron
Regards,
--
Alex, homepage: http://www.bennee.com/~alex/
By doing just a little every day, you can gradually let the task
completely overwhelm you.