pixman / tls link time issue
dam at opencsw.org
Wed Jun 22 09:43:40 CEST 2016
Am 21.06.2016 um 12:48 schrieb Riccardo Mottola <rmottola at opencsw.org>:
> in gnustep-back I am trying to compileagainst the cairo library both on solaris 9 and solaris 10. Since pkg-config doesn't appear to work too well, I added manually CFLAGS and LDFLAGS this way:
I strongly suggest fixing the .pc file.
> CONFIGURE_ARGS_5.9 += CFLAGS="$(CFLAGS) -I/opt/csw/include/freetype2 -I/opt/csw/include/cairo" LDFLAGS="$(LDFLAGS) -lcairo"
> This generates
> $ ./configure --prefix=/opt/csw --exec_prefix=/opt/csw --bindir=/opt/csw/bin --sbindir=/opt/csw/sbin --libexecdir=/opt/csw/libexec -
> -datadir=/opt/csw/share --sysconfdir=/etc/opt/csw --sharedstatedir=/opt/csw/share --localstatedir=/var/opt/csw --libdir=/opt/csw/lib -
> -infodir=/opt/csw/share/info --includedir=/opt/csw/include --mandir=/opt/csw/share/man --enable-graphics=cairo CFLAGS=-O2 -pipe -mcpu=
> v8 -I/opt/csw/include/freetype2 -I/opt/csw/include/cairo LDFLAGS=-mcpu=v8 -L/opt/csw/lib -lcairo
> which looks fine to me
> This seesm to work partially, since a configure test fails this way.
> configure:2717: checking whether the C compiler works
> configure:2739: /opt/csw/bin/gcc-4.6 -O2 -pipe -mcpu=v8 -I/opt/csw/include/freetype2 -I/opt/csw/include/cairo -mcpu=v8 -L/opt/csw/lib
> -lcairo conftest.c >&5
> Undefined first referenced
> symbol in file
> __tls_get_addr /opt/csw/lib/libpixman-1.so.0
> ld: fatal: Symbol referencing errors. No output written to a.out
> pixman is surely pulled in by cairo.
> Apparently pixman needs tls but it is not there or it is not the right version?
> Or a TLS package should be installed on unstable9s and it isn't?
> pkginfo shows:
> application CSWgnutls
> application CSWgnutlsdevel gnutls_devel - Legacy
> application CSWlibgnutls-dev libgnutls_dev -
> application CSWlibgnutls13 libgnutls13 - Legacy GNU
> application CSWlibgnutls26 libgnutls26 - GNU Transport Layer Security libraries and tools providing libgnutls*.so.26
> ldd /opt/csw/lib/libpixman-1.so
> libm.so.1 => /usr/lib/libm.so.1
> libc.so.1 => /usr/lib/libc.so.1
> libdl.so.1 => /usr/lib/libdl.so.1
> I see no linkage to tls!
unstable9s% ldd -r /opt/csw/lib/libpixman-1.so
libm.so.1 => /usr/lib/libm.so.1
libc.so.1 => /usr/lib/libc.so.1
libdl.so.1 => /usr/lib/libdl.so.1
symbol not found: __tls_get_addr (/opt/csw/lib/libpixman-1.so)
So libpixman-1.so needs the symbol, but does not link against it. __tls_get_addr is not
from GnuTLS (Transport Layer Security), but from a multithreading library (Thread Local Store).
I don’t know where this comes from, 1 minute Googling didn’t bring up anything reasonable
and I can’t remember to have seen this before. You may need to investigate.
"You don't become great by trying to be great, you become great by wanting to do something,
and then doing it so hard that you become great in the process." - xkcd #896
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 841 bytes
Desc: Message signed with OpenPGP using GPGMail
More information about the maintainers