PThread Issue: -pthread vs. -lpthread for a new port
Ulrich Spoerlein
q at uni.de
Mon Jan 3 11:42:25 GMT 2005
Hi all,
I ported [1] wxruby [2] but am running into an issue wrt pthreads. The
wxruby library gets linked like this:
cc -shared `wx-config --libs` -Wl,--version-script,./version-script
-Wl,-soname,wxruby.so -L'/usr/local/lib' -Wl,-R'/usr/local/lib'
-L'/usr/local/lib' -Wl,-R'/usr/local/lib' -o wxruby.so <lots of objects>
-Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -L. -lruby18 -lcrypt -lm -lc
with
$ wx-config --libs
-L/usr/X11R6/lib -L/usr/local/lib -liconv -L/usr/X11R6/lib -pthread -lwx_gtk2-2.4
ldd(1) says this:
/usr/local/lib/ruby/site_ruby/1.8/i386-freebsd5/wxruby.so:
libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x48251000)
libwx_gtk2-2.4.so => /usr/X11R6/lib/libwx_gtk2-2.4.so (0x4833c000)
libruby18.so.18 => /usr/local/lib/libruby18.so.18 (0x487db000)
libcrypt.so.2 => /lib/libcrypt.so.2 (0x48897000)
libm.so.3 => /lib/libm.so.3 (0x488af000)
libc.so.5 => /lib/libc.so.5 (0x48082000)
libgtk-x11-2.0.so.400 => /usr/X11R6/lib/libgtk-x11-2.0.so.400 (0x488c9000)
libgdk-x11-2.0.so.400 => /usr/X11R6/lib/libgdk-x11-2.0.so.400 (0x48b5c000)
libXrandr.so.2 => /usr/X11R6/lib/libXrandr.so.2 (0x48bc6000)
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x48bca000)
libXinerama.so.1 => /usr/X11R6/lib/libXinerama.so.1 (0x48bd2000)
libXcursor.so.1 => /usr/X11R6/lib/libXcursor.so.1 (0x48bd5000)
libatk-1.0.so.800 => /usr/local/lib/libatk-1.0.so.800 (0x48bde000)
libgdk_pixbuf-2.0.so.400 => /usr/X11R6/lib/libgdk_pixbuf-2.0.so.400 (0x48bf7000)
libpangoxft-1.0.so.600 => /usr/X11R6/lib/libpangoxft-1.0.so.600 (0x48c0b000)
libXft.so.2 => /usr/X11R6/lib/libXft.so.2 (0x48c10000)
libfreetype.so.9 => /usr/local/lib/libfreetype.so.9 (0x48c1f000)
libz.so.2 => /lib/libz.so.2 (0x48c7c000)
libXrender.so.1 => /usr/X11R6/lib/libXrender.so.1 (0x48c8c000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x48c94000)
libfontconfig.so.1 => /usr/X11R6/lib/libfontconfig.so.1 (0x48ca1000)
libpangox-1.0.so.600 => /usr/X11R6/lib/libpangox-1.0.so.600 (0x48cc3000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x48cce000)
libpango-1.0.so.600 => /usr/X11R6/lib/libpango-1.0.so.600 (0x48d8d000)
libgobject-2.0.so.400 => /usr/local/lib/libgobject-2.0.so.400 (0x48dc1000)
libgmodule-2.0.so.400 => /usr/local/lib/libgmodule-2.0.so.400 (0x48dfb000)
libgthread-2.0.so.400 => /usr/local/lib/libgthread-2.0.so.400 (0x48dff000)
libglib-2.0.so.400 => /usr/local/lib/libglib-2.0.so.400 (0x48e03000)
libpng.so.5 => /usr/local/lib/libpng.so.5 (0x48e7d000)
libjpeg.so.9 => /usr/local/lib/libjpeg.so.9 (0x48ea0000)
libtiff.so.4 => /usr/local/lib/libtiff.so.4 (0x48eba000)
libpangoft2-1.0.so.600 => /usr/X11R6/lib/libpangoft2-1.0.so.600 (0x48f05000)
libstdc++.so.4 => /usr/lib/libstdc++.so.4 (0x48f29000)
libintl.so.6 => /usr/local/lib/libintl.so.6 (0x48ffb000)
libexpat.so.5 => /usr/local/lib/libexpat.so.5 (0x49004000)
And running a ruby program requiring wxruby I get this error:
/libexec/ld-elf.so.1: /usr/local/lib/libgthread-2.0.so.400: Undefined symbol "pthread_getschedparam"
When I link the library with -lpthread instead of -pthread ldd(1) has
this to say
/usr/local/lib/ruby/site_ruby/1.8/i386-freebsd5/wxruby.so:
libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x48251000)
libpthread.so.1 => /usr/lib/libpthread.so.1 (0x4833c000)
libwx_gtk2-2.4.so => /usr/X11R6/lib/libwx_gtk2-2.4.so (0x48360000)
libruby18.so.18 => /usr/local/lib/libruby18.so.18 (0x487ff000)
libcrypt.so.2 => /lib/libcrypt.so.2 (0x488bb000)
libm.so.3 => /lib/libm.so.3 (0x488d3000)
libc.so.5 => /lib/libc.so.5 (0x48082000)
libgtk-x11-2.0.so.400 => /usr/X11R6/lib/libgtk-x11-2.0.so.400 (0x488ed000)
libgdk-x11-2.0.so.400 => /usr/X11R6/lib/libgdk-x11-2.0.so.400 (0x48b80000)
libXrandr.so.2 => /usr/X11R6/lib/libXrandr.so.2 (0x48bea000)
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x48bee000)
libXinerama.so.1 => /usr/X11R6/lib/libXinerama.so.1 (0x48bf6000)
libXcursor.so.1 => /usr/X11R6/lib/libXcursor.so.1 (0x48bf9000)
libatk-1.0.so.800 => /usr/local/lib/libatk-1.0.so.800 (0x48c02000)
libgdk_pixbuf-2.0.so.400 => /usr/X11R6/lib/libgdk_pixbuf-2.0.so.400 (0x48c1b000)
libpangoxft-1.0.so.600 => /usr/X11R6/lib/libpangoxft-1.0.so.600 (0x48c2f000)
libXft.so.2 => /usr/X11R6/lib/libXft.so.2 (0x48c34000)
libfreetype.so.9 => /usr/local/lib/libfreetype.so.9 (0x48c43000)
libz.so.2 => /lib/libz.so.2 (0x48ca0000)
libXrender.so.1 => /usr/X11R6/lib/libXrender.so.1 (0x48cb0000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x48cb8000)
libfontconfig.so.1 => /usr/X11R6/lib/libfontconfig.so.1 (0x48cc5000)
libpangox-1.0.so.600 => /usr/X11R6/lib/libpangox-1.0.so.600 (0x48ce7000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x48cf2000)
libpango-1.0.so.600 => /usr/X11R6/lib/libpango-1.0.so.600 (0x48db1000)
libgobject-2.0.so.400 => /usr/local/lib/libgobject-2.0.so.400 (0x48de5000)
libgmodule-2.0.so.400 => /usr/local/lib/libgmodule-2.0.so.400 (0x48e1f000)
libgthread-2.0.so.400 => /usr/local/lib/libgthread-2.0.so.400 (0x48e23000)
libglib-2.0.so.400 => /usr/local/lib/libglib-2.0.so.400 (0x48e27000)
libpng.so.5 => /usr/local/lib/libpng.so.5 (0x48ea1000)
libjpeg.so.9 => /usr/local/lib/libjpeg.so.9 (0x48ec4000)
libtiff.so.4 => /usr/local/lib/libtiff.so.4 (0x48ede000)
libpangoft2-1.0.so.600 => /usr/X11R6/lib/libpangoft2-1.0.so.600 (0x48f29000)
libstdc++.so.4 => /usr/lib/libstdc++.so.4 (0x48f4d000)
libintl.so.6 => /usr/local/lib/libintl.so.6 (0x4901f000)
libexpat.so.5 => /usr/local/lib/libexpat.so.5 (0x49028000)
and the module works fine. What to do? Why doesn't -pthread take care of
the situation?
[1] http://www.galgenberg.net/~q/ruby-wx.shar
[2] http://wxruby.rubyforge.org/wiki/wiki.pl
Ulrich Spoerlein
--
PGP Key ID: F0DB9F44 Encrypted mail welcome!
Fingerprint: F1CE D062 0CA9 ADE3 349B 2FE8 980A C6B5 F0DB 9F44
Ok, which part of "Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn."
didn't you understand?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20050103/3d0af052/attachment.bin
More information about the freebsd-ports
mailing list