Undefined symbols when compiling X11 software

Olivier Croquette ocroquette at free.fr
Sat Sep 8 15:42:03 PDT 2007


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



More information about the macports-users mailing list