[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: libtool/make and sysroot

From: Ersin Akinci
Subject: Re: libtool/make and sysroot
Date: Sun, 21 Mar 2010 15:35:22 -0400

Thank you to everyone who jumped in with a reply!  Yes, I can see now that sysroot and libtool have some problems together.

Sure enough, the problem was in /home/ersin/vorpo/toolchain/usr/lib/  Once I changed "libdir='/usr/lib'" to "libdir='/home/ersin/vorpo/toolchain/usr/lib'" the build linked normally.  But isn't that dangerous?  Here's what the compile line has turned into:

i386-linux-gcc --sysroot=/home/ersin/vorpo/toolchain -I/usr/include/freetype2 -O3 -ffast-math -pipe -Os -D_GNU_SOURCE -Werror-implicit-function-declaration -o directfb-csource directfb-csource.o  /home/ersin/vorpo/toolchain/usr/lib/ -ldl -lpthread   -Wl,--rpath -Wl,/home/ersin/vorpo/toolchain/usr/lib -Wl,--rpath -Wl,/home/ersin/vorpo/toolchain/usr/lib

Is that setting the rpath to my sysroot, or is the --rpath switch spurious?  If it is setting rpath, is there a way to change so that libtool gets the right directory but sets a different rpath?  Are there any other side effects of changing .la files?


On Sun, Mar 21, 2010 at 2:56 PM, Daniel Herring <address@hidden> wrote:
On Sun, 21 Mar 2010, Ersin Akinci wrote:
I've been trying to build DirectFB, and I think that I've narrowed down a bug in the build process to what might be a confusing
make or libtool behavior.  I've been cross-compiling using --sysroot for gcc so that everything will link against a custom set
of libraries that I've built.  Here's my full configure line (the important part is to note that

DirectFB chokes, however, when it starts to build a certain tool, directfb-csource, that requires libpng.  Here's the relevant
part from the build:

address@hidden DirectFB-1.4.3]$ make directfb-csource
make -C tools directfb-csource                      
make[1]: Entering directory `/home/ersin/vorpo/build/DirectFB-1.4.3/tools'
i386-linux-gcc --sysroot=/home/ersin/vorpo/toolchain -DHAVE_CONFIG_H -I. -I.. -I../lib -I../include -I../include -I../lib
-I../src -DDATADIR=\"/usr/share/directfb-1.4.3\" -D_REENTRANT  -I/usr/include/freetype2   -O3 -ffast-math -pipe -Os
-D_GNU_SOURCE  -Werror-implicit-function-declaration -MT directfb-csource.o -MD -MP -MF .deps/directfb-csource.Tpo -c -o
directfb-csource.o directfb-csource.c                                   
mv -f .deps/directfb-csource.Tpo .deps/directfb-csource.Po                                                 
/bin/sh ../libtool --tag=CC   --mode=link i386-linux-gcc --sysroot=/home/ersin/vorpo/toolchain -I/usr/include/freetype2   -O3
-ffast-math -pipe -Os -D_GNU_SOURCE  -Werror-implicit-function-declaration   -o directfb-csource directfb-csource.o -lpng12 -ldl
mkdir .libs                                                                                                
i386-linux-gcc --sysroot=/home/ersin/vorpo/toolchain -I/usr/include/freetype2 -O3 -ffast-math -pipe -Os -D_GNU_SOURCE
-Werror-implicit-function-declaration -o directfb-csource directfb-csource.o  /usr/lib/ -ldl -lpthread
ux-uclibc/bin/ld: warning:, needed by /usr/lib/, not found (try using -rpath or -rpath-link)
ux-uclibc/bin/ld: warning:, needed by /usr/lib/, not found (try using -rpath or -rpath-link)
/usr/lib/ undefined reference to address@hidden'

collect2: ld returned 1 exit status
make[1]: *** [directfb-csource] Error 1
make[1]: Leaving directory `/home/ersin/vorpo/build/DirectFB-1.4.3/tools'
make: *** [directfb-csource] Error 2
address@hidden DirectFB-1.4.3]$

Something strange is going on here.  Look at the lines after "mkdir .libs" carefully:

It looks like libtool is reading the wrong .la file and changing paths on you.  The output of `libtool --version` might be useful.  For proper debugging,

# cd /home/ersin/vorpo/build/DirectFB-1.4.3/tools
# /bin/sh ../libtool --debug --tag=CC   --mode=link i386-linux-gcc --sysroot=/home/ersin/vorpo/toolchain -I/usr/include/freetype2 -O3 -ffast-math -pipe -Os -D_GNU_SOURCE -Werror-implicit-function-declaration  -o directfb-csource directfb-csource.o -lpng12 -ldl -lpthread > libtool-debug.txt

Search this for the first occurrance of /usr/lib/ and then look backwards for a .la.  Or just grep the /usr/lib/ text file. If you find this path in an offending .la file, rename that file to .la-bak and try recompiling.

These .la files can be absolutely essential in some situations, and a complete nightmare in others.

The .la file problem is my first guess.  If its not the issue, then upload the libtool-debug.txt file to a paste bin somewhere and submit a link to this list.

- Daniel

What Digital Revolution? --
Thinking critically about digital worlds.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]