Undefined symbols when compiling X11 software
Hi all After having installed X11User and the X11 SDK both from Apple, I couldn't understand why any port of any X11 app would fail with the following kind of errors: $ sudo port install whatever ---> Building xrender with target all Error: Target org.macports.build returned: shell command " cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_x11_xrender/work/libXrender-0.9.0" && make all " returned error 2 Command output: /bin/sh ./libtool --mode=link /usr/bin/gcc-4.0 -I/opt/local/include -I/usr/X11R6/include -DXTHREADS -O2 -L/opt/local/lib -o libXrender.la -rpath /opt/local/lib -version-number 1:3:0 -no-undefined AddTrap.lo Color.lo Composite.lo Cursor.lo FillRect.lo FillRects.lo Filter.lo Glyph.lo Picture.lo Poly.lo Trap.lo Tri.lo Xrender.lo -L/usr/X11R6/lib -lX11 -lX11 /usr/bin/gcc-4.0 -dynamiclib -o .libs/libXrender.1.3.0.dylib .libs/AddTrap.o .libs/Color.o .libs/Composite.o .libs/Cursor.o .libs/FillRect.o .libs/FillRects.o .libs/Filter.o .libs/Glyph.o .libs/Picture.o .libs/Poly.o .libs/Trap.o .libs/Tri.o .libs/Xrender.o -L/opt/local/lib -L/usr/X11R6/lib -lX11 -install_name /opt/local/lib/libXrender.1.dylib -compatibility_version 5 -current_version 5.0 ld: Undefined symbols: __XFlush __XSend _XParseColor __XEatData __XRead __XReadPad __XReply __XAllocTemp __XFreeTemp _XAddExtension _XCreatePixmap _XESetCloseDisplay _XFree _XFreePixmap _XInitExtension _XNextRequest _XSetErrorHandler _XSync __XDeqAsyncHandler __XGetAsyncReply __XLockMutex_fn __XUnlockMutex_fn __XVIDtoVisual __Xglobal_lock /usr/bin/libtool: internal link edit command failed make[1]: *** [libXrender.la] Error 1 Everything was there in /usr/X11R6/lib, and even a "nm" was showing all the requested symbols. Well, after trying to find out during 1h, I found the solution and wanted to share with whoever might make the same mistake: If you have an Mac Intel, make sure you installed X11User from the Mac Intel install DVDs. Otherwise, you will have a working X11 (through Rosetta), but you won't be able to link any port application, since you can't mix PPC and Intel code... The error doesn't show the real problem! I found out compiling some sample programs on my own. Then I got a much clearer warning: /usr/bin/ld: warning /usr/X11R6/lib/libX11.dylib cputype (18, architecture ppc) does not match cputype (7) for specified -arch flag: i386 (file not loaded) Regards Olivier
On Sep 8, 2007, at 17:42, Olivier Croquette wrote:
After having installed X11User and the X11 SDK both from Apple, I couldn't understand why any port of any X11 app would fail with the following kind of errors:
$ sudo port install whatever ---> Building xrender with target all Error: Target org.macports.build returned: shell command " cd "/opt/ local/var/macports/build/ _opt_local_var_macports_sources_rsync.macports.org_release_ports_x11_x render/work/libXrender-0.9.0" && make all " returned error 2 Command output: /bin/sh ./libtool --mode=link /usr/bin/gcc-4.0 -I/ opt/local/include -I/usr/X11R6/include -DXTHREADS -O2 -L/opt/ local/lib -o libXrender.la -rpath /opt/local/lib -version-number 1:3:0 -no-undefined AddTrap.lo Color.lo Composite.lo Cursor.lo FillRect.lo FillRects.lo Filter.lo Glyph.lo Picture.lo Poly.lo Trap.lo Tri.lo Xrender.lo -L/usr/X11R6/lib -lX11 -lX11 /usr/bin/gcc-4.0 -dynamiclib -o .libs/libXrender.1.3.0.dylib .libs/ AddTrap.o .libs/Color.o .libs/Composite.o .libs/Cursor.o .libs/ FillRect.o .libs/FillRects.o .libs/Filter.o .libs/Glyph.o .libs/ Picture.o .libs/Poly.o .libs/Trap.o .libs/Tri.o .libs/Xrender.o -L/ opt/local/lib -L/usr/X11R6/lib -lX11 -install_name /opt/local/lib/ libXrender.1.dylib -compatibility_version 5 -current_version 5.0 ld: Undefined symbols: __XFlush __XSend _XParseColor __XEatData __XRead __XReadPad __XReply __XAllocTemp __XFreeTemp _XAddExtension _XCreatePixmap _XESetCloseDisplay _XFree _XFreePixmap _XInitExtension _XNextRequest _XSetErrorHandler _XSync __XDeqAsyncHandler __XGetAsyncReply __XLockMutex_fn __XUnlockMutex_fn __XVIDtoVisual __Xglobal_lock /usr/bin/libtool: internal link edit command failed make[1]: *** [libXrender.la] Error 1
Everything was there in /usr/X11R6/lib, and even a "nm" was showing all the requested symbols.
Well, after trying to find out during 1h, I found the solution and wanted to share with whoever might make the same mistake:
If you have an Mac Intel, make sure you installed X11User from the Mac Intel install DVDs. Otherwise, you will have a working X11 (through Rosetta), but you won't be able to link any port application, since you can't mix PPC and Intel code...
The error doesn't show the real problem!
I found out compiling some sample programs on my own. Then I got a much clearer warning: /usr/bin/ld: warning /usr/X11R6/lib/libX11.dylib cputype (18, architecture ppc) does not match cputype (7) for specified -arch flag: i386 (file not loaded)
So out of curiosity, where did you get your X11User.pkg from, if not from your Mac's install DVD? Did you use a PowerPC Mac's install DVD on your Intel Mac?
participants (2)
-
Olivier Croquette
-
Ryan Schmidt