Hi all,

I'm having trouble building the RC 4.8.0 with an in-tree binutils on
an Ubuntu 12.04 x86_64.  It seems that while building GCC, the runtime
library path does not include the objdir/prev-*/.libs directories; so
whenever any of the built binutils programs are run they fail as their
shared libraries cannot be found. The SOs are built but aren't on the
LD_LIBRARY_PATH it seems.

For example, configure of the "intl" package fails with
/home/mgodbolt/dev/fig-packages/scratch/gcc/4.8.0-RC-20130316/objdir/prev-gas/.libs/lt-as-new:
error while loading shared libraries:libopcodes-2.23.1.so: cannot open
shared object file: No such file or directory

But binutils has been successfully built earlier by the gcc makefile,
and is available:
wud-mgodbolt01:~/dev/fig-packages/scratch/gcc/4.8.0-RC-20130316/objdir(master)⚡
mgodbolt$ find -name libopcodes-2.23.1.so
./prev-opcodes/.libs/libopcodes-2.23.1.so

I was able to successfully built GCC 4.7.2 with in-tree binutils.

I'm using BINUTILS 2.23.1 (though have tried 2.22 with the same
issue), and the following configure options:
--prefix=/site/apps/gcc-4.8.0-RC-20130316
--build=x86_64-linux-gnu
--enable-clocale=gnu
--enable-languages=c,c++
--enable-ld=yes
--enable-libstdcxx-debug
--enable-libstdcxx-time=yes
--enable-linker-build-id
--enable-lto
--enable-plugin
--enable-shared
--enable-threads=posix
--host=x86_64-linux-gnu
--target=x86_64-linux-gnu
--with-system-zlib

I configure from an object directory just above the root of gcc, and I
prepare the merged tree by symbolically linking all binutils files and
directories out of the binutils package into gcc (unless they are
already present):
BINUTILS_DIR=binutils-${BINUTILS_VERSION}
BINUTILS_FILES=$(cd ${BINUTILS_DIR}; ls -1)
pushd gcc-${VERSION}
for file in ${BINUTILS_FILES}
do
    if [ ! -e "$file" ]
    then
        ln -sf "../${BINUTILS_DIR}/${file}"
    fi
done
popd

Any pointers welcomed, and I'd be happy to supply even more information.

Much appreciated, Matt

Reply via email to