I imagine few people here will care about gtkimageview, but I need
it for ufraw.  And I've gone back to using the gold linker "because
everything seemed to be too easy".  I'm documenting this here so
that google can find it the next time somebody hits this.

When I first used gold in the early part of this year, I had to use
two seds : the first is because a function in gdk_pixbuf is now
deprecated -

sed -i -e '/CFLAGS/s/-Werror //g' configure.in

The second, which worked with e.g. binutils-2.26 and glibc-2.23, is
because gold doesn't go out of its way to find symbols in another
library used by a library you link to (see e.g.
https://wiki.debian.org/ToolChain/DSOLinking) -

sed -e '/libtest.la/s:$: -lm:g' -i tests/Makefile.in

(That was based on the rather more complex fix used by gentoo, which
needed old versions of autotools if my memory serves)

But with gold from 2.27 and glibc 2.24 I was back to:

mkdir .libs
gcc -O2 -Wall -std=c99 -Wmissing-prototypes -o .libs/ex-abssize
ex-abssize.o  ../src/.libs/libgtkimageview.so
./testlib/.libs/libtest.a -lgtk-x11-2.0 -lgdk-x11-2.0
-lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0
-lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lfontconfig
-lfreetype -lm  -Wl,--rpath -Wl,/usr/lib
../src/.libs/libgtkimageview.so: error: undefined reference to
'ceil'
collect2: error: ld returned 1 exit status

In the end, changing the sed fixed this but it took me ages to
figure it out (the order of libraries is important), I'm now using

sed -e 's%\(./testlib/libtest.la\)%-lm \1%' -i tests/Makefile.in

to put libm earlier in the link.

ĸen
-- 
`I shall take my mountains', said Lu-Tze. `The climate will be good
for them.'     -- Small Gods
-- 
http://lists.linuxfromscratch.org/listinfo/blfs-support
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to