This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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]

How to configure cross binutils in a sane state?


Hello,

I have been trying to configure and build a cross instance of binutils
for an arm-linux target.

Enable-shared issue
-----------------------------

I have been trying many switches (it was hard to find any
documentation on the FEATURES provided by configure) and my conclusion
is that if pass --enable-shared the build fails and I wonder why. If I
do not explicitly set --enabled-shared, defaults for opcodes and bfd
is NO while binutils is YES. I imagine those defaults are sane.

See Configure logs section

Rpath issue
-----------------

When building env CC="gcc" CXX="g++" ../configure
--target=arm-linux-gnueabi   --prefix=/usr  --enable-plugins (and also
other configurations)  I see on the log:

../build-enable-plugins.log:956:/bin/bash ./libtool --tag=CC
--mode=link gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes
-Werror -g -O2 *-rpath
/usr/x86_64-unknown-linux-gnu/arm-linux-gnueabi/lib* -release `cat
libtool-soversion`   -o libbfd.la  archive.lo archures.lo bfd.lo
bfdio.lo bfdwin.lo cache.lo coffgen.lo corefile.lo format.lo init.lo
libbfd.lo opncls.lo reloc.lo section.lo syms.lo targets.lo hash.lo
linker.lo srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo
merge.lo dwarf2.lo simple.lo compress.lo verilog.lo `cat ofiles`  -ldl
-lz

../build-enable-plugins.log:1096:/bin/bash ./libtool --tag=CC
--mode=link gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes
-Werror -g -O2 *-rpath
/usr/x86_64-unknown-linux-gnu/arm-linux-gnueabi/lib* -release `cat
../bfd/libtool-soversion`   -o libopcodes.la  dis-buf.lo
disassemble.lo dis-init.lo arm-dis.lo

My libs should be under /usr/arm-linux-gnueabi/lib, why is rpath
pointing other directory (*-rpath
/usr/x86_64-unknown-linux-gnu/arm-linux-gnueabi/lib*)?
How should I instruct binutils to use /usr/arm-linux-gnueabi/lib? I
tried --with-lib-path without success, even --with-sysroot.

Last minute tests show that passing
--with-build-sysroot=/usr/arm-linux-gnueabi does not fix it either.

$ tail ../build-enable-plugin-with-build-sysroot.log
LIB_PATH='' /bin/bash ../../ld/genscripts.sh "../../ld" "/usr/lib"
"/usr" "/usr" x86_64-unknown-linux-gnu arm-unknown-linux-gnueabi
arm-linux-gnueabi "armelf_linux_eabi armelfb_linux_eabi"
"/usr/local/lib /lib /usr/lib" no armelfb_linux_eabi ""
[...]

$ grep rpath ../build-enable-plugin-with-build-sysroot.log
/bin/bash ./libtool --tag=CC   --mode=link gcc -W -Wall
-Wstrict-prototypes -Wmissing-prototypes -Werror -g -O2 -rpath
/usr/x86_64-unknown-linux-gnu/arm-linux-gnueabi/lib -release `cat
libtool-soversion`   -o libbfd.la  archive.lo archures.lo bfd.lo
bfdio.lo bfdwin.lo cache.lo coffgen.lo corefile.lo format.lo init.lo
libbfd.lo opncls.lo reloc.lo section.lo syms.lo targets.lo hash.lo
linker.lo srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo
merge.lo dwarf2.lo simple.lo compress.lo verilog.lo `cat ofiles`  -ldl
-lz

/bin/bash ./libtool --tag=CC   --mode=link gcc -W -Wall
-Wstrict-prototypes -Wmissing-prototypes -Werror -g -O2 -rpath
/usr/x86_64-unknown-linux-gnu/arm-linux-gnueabi/lib -release `cat
../bfd/libtool-soversion`   -o libopcodes.la  dis-buf.lo
disassemble.lo dis-init.lo arm-dis.lo


Configure logs
---------------------

Assume I am using different switches on configure stated by
./build-$switch. For example, ../build-enable-plugins.log means it was
built with:

env CC="gcc" CXX="g++" ../configure --target=arm-linux-gnueabi
--prefix=/usr  --enable-plugins

==> ../build-enable-plugins.log <==
mv -f .deps/ldcref.Tpo .deps/ldcref.Po
cp ../../ld/emultempl/astring.sed stringify.sed
LIB_PATH='' /bin/bash ../../ld/genscripts.sh "../../ld" "/usr/lib"
"/usr" "/usr" x86_64-unknown-linux-gnu arm-unknown-linux-gnueabi
arm-linux-gnueabi "armelf_linux_eabi armelfb_linux_eabi"
"/usr/local/lib /lib /usr/lib" no armelf_linux_eabi ""
gcc -DHAVE_CONFIG_H -I. -I../../ld  -I. -I../../ld -I../bfd
-I../../ld/../bfd -I../../ld/../include  -g -O2
-DLOCALEDIR="\"/usr/share/locale\""  -W -Wall -Wstrict-prototypes
-Wmissing-prototypes -Werror -g -O2 -MT earmelf_linux_eabi.o -MD -MP
-MF .deps/earmelf_linux_eabi.Tpo -c -o earmelf_linux_eabi.o
earmelf_linux_eabi.c
mv -f .deps/earmelf_linux_eabi.Tpo .deps/earmelf_linux_eabi.Po
LIB_PATH='' /bin/bash ../../ld/genscripts.sh "../../ld" "/usr/lib"
"/usr" "/usr" x86_64-unknown-linux-gnu arm-unknown-linux-gnueabi
arm-linux-gnueabi "armelf_linux_eabi armelfb_linux_eabi"
"/usr/local/lib /lib /usr/lib" no armelfb_linux_eabi ""
gcc -DHAVE_CONFIG_H -I. -I../../ld  -I. -I../../ld -I../bfd
-I../../ld/../bfd -I../../ld/../include  -g -O2
-DLOCALEDIR="\"/usr/share/locale\""  -W -Wall -Wstrict-prototypes
-Wmissing-prototypes -Werror -g -O2 -MT earmelfb_linux_eabi.o -MD -MP
-MF .deps/earmelfb_linux_eabi.Tpo -c -o earmelfb_linux_eabi.o
earmelfb_linux_eabi.c
mv -f .deps/earmelfb_linux_eabi.Tpo .deps/earmelfb_linux_eabi.Po
/bin/bash ./libtool --tag=CC   --mode=link gcc -W -Wall
-Wstrict-prototypes -Wmissing-prototypes -Werror -g -O2   -o ld-new
ldgram.o ldlex-wrapper.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o
ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o
earmelf_linux_eabi.o earmelfb_linux_eabi.o  ../bfd/libbfd.la
../libiberty/libiberty.a  -lz
libtool: link: gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes
-Werror -g -O2 -o ld-new ldgram.o ldlex-wrapper.o lexsup.o ldlang.o
mri.o ldctor.o ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o
ldfile.o ldcref.o earmelf_linux_eabi.o earmelfb_linux_eabi.o
../bfd/.libs/libbfd.a -ldl ../libiberty/libiberty.a -lz
make[4]: Leaving directory
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi/ld'
make[3]: Leaving directory
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi/ld'
make[2]: Leaving directory
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi/ld'
make[1]: Nothing to be done for `all-target'.
make[1]: Leaving directory
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi'

==> ../build-enable-shared.log <==
make[2]: Leaving directory
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi/bfd'
mkdir -p -- ./opcodes
Configuring in ./opcodes
configure: creating cache ./config.cache
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... arm-unknown-linux-gnueabi
checking for x86_64-unknown-linux-gnu-gcc... gcc
checking for C compiler default output file name...
configure: error: in
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi/opcodes':
configure: error: C compiler cannot create executables
See `config.log' for more details.
make[1]: *** [configure-opcodes] Error 1
make[1]: Leaving directory
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi'
make: *** [all] Error 2

==> ../build-enable-shared-plugins.log <==
make[2]: Leaving directory
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi/bfd'
mkdir -p -- ./opcodes
Configuring in ./opcodes
configure: creating cache ./config.cache
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... arm-unknown-linux-gnueabi
checking for x86_64-unknown-linux-gnu-gcc... gcc
checking for C compiler default output file name...
configure: error: in
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi/opcodes':
configure: error: C compiler cannot create executables
See `config.log' for more details.
make[1]: *** [configure-opcodes] Error 1
make[1]: Leaving directory
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi'
make: *** [all] Error 2

==> ../build-enable-shared-with-lib-path-and-64-bit-bfd.log <==
make[2]: Leaving directory
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi/bfd'
mkdir -p -- ./opcodes
Configuring in ./opcodes
configure: creating cache ./config.cache
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... arm-unknown-linux-gnueabi
checking for x86_64-unknown-linux-gnu-gcc... gcc
checking for C compiler default output file name...
configure: error: in
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi/opcodes':
configure: error: C compiler cannot create executables
See `config.log' for more details.
make[1]: *** [configure-opcodes] Error 1
make[1]: Leaving directory
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi'
make: *** [all] Error 2

==> ../build-enable-shared-with-lib-path-and-64-bit-bfd-with-sysroot.log <==
make[2]: Leaving directory
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi/bfd'
mkdir -p -- ./opcodes
Configuring in ./opcodes
configure: creating cache ./config.cache
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... arm-unknown-linux-gnueabi
checking for x86_64-unknown-linux-gnu-gcc... gcc
checking for C compiler default output file name...
configure: error: in
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi/opcodes':
configure: error: C compiler cannot create executables
See `config.log' for more details.
make[1]: *** [configure-opcodes] Error 1
make[1]: Leaving directory
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi'
make: *** [all] Error 2

==> ../build-enable-shared-with-lib-path-with-sysroot.log <==
make[2]: Leaving directory
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi/bfd'
mkdir -p -- ./opcodes
Configuring in ./opcodes
configure: creating cache ./config.cache
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... arm-unknown-linux-gnueabi
checking for x86_64-unknown-linux-gnu-gcc... gcc
checking for C compiler default output file name...
configure: error: in
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi/opcodes':
configure: error: C compiler cannot create executables
See `config.log' for more details.
make[1]: *** [configure-opcodes] Error 1
make[1]: Leaving directory
`/tmp/upstream/binutils-2.20.1/builddir-arm-linux-gnueabi'
make: *** [all] Error 2


References
----------------
 * http://sourceware.org/ml/binutils/2009-09/msg00635.html
 * http://sourceware.org/bugzilla/show_bug.cgi?id=6027

Kind Regards,
-- 
 Héctor Orón

"Our Sun unleashes tremendous flares expelling hot gas into the Solar
System, which one day will disconnect us."


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