Missing symbol error when building X.org from git
Dan Nicholson
dbn.lists at gmail.com
Fri Mar 19 07:05:20 PDT 2010
On Thu, Mar 18, 2010 at 9:12 PM, Joel Feiner <jafeiner at gmail.com> wrote:
> On Thu, Mar 18, 2010 at 4:58 PM, Dan Nicholson <dbn.lists at gmail.com> wrote:
>>
>> On Thu, Mar 18, 2010 at 12:41 PM, Joel Feiner <jafeiner at gmail.com> wrote:
>> > On Thu, Mar 18, 2010 at 3:32 PM, Dan Nicholson <dbn.lists at gmail.com>
>> > wrote:
>> >>
>> >> On Thu, Mar 18, 2010 at 10:54 AM, Joel Feiner <jafeiner at gmail.com>
>> >> wrote:
>> >> > The error that comes up is this:
>> >> > libtool: link: gcc -DHAVE_DMX_CONFIG_H -DHAVE_DIX_CONFIG_H -Wall
>> >> > -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes
>> >> > -Wmissing-declarations -Wnested-externs -fno-strict-aliasing
>> >> > -Wbad-function-cast -Wformat=2 -Wold-style-definition
>> >> > -Wdeclaration-after-statement -D_BSD_SOURCE -DHAS_FCHOWN
>> >> > -DHAS_STICKY_DIR_BIT -I/home/XXXX/xbuild/out/include/pixman-1
>> >> > -I/usr/include/freetype2 -I../../include -I../../include -I../../Xext
>> >> > -I../../composite -I../../damageext -I../../xfixes -I../../Xi
>> >> > -I../../mi
>> >> > -I../../miext/shadow -I../../miext/damage -I../../render
>> >> > -I../../randr
>> >> > -I../../fb -fvisibility=hidden -I../../hw/xfree86/dixmods/extmod
>> >> > -I/home/XXXX/xbuild/out/include/libdrm -I/usr/include/freetype2 -O2
>> >> > -mtune=native -march=native -pipe -fomit-frame-pointer -rdynamic -o
>> >> > Xdmx
>> >> > dmx.o dmxcb.o dmxcmap.o dmxcursor.o dmxdpms.o dmxextension.o
>> >> > dmxfont.o
>> >> > dmxgc.o dmxgcops.o dmxinit.o dmxinput.o dmxlog.o dmxpict.o
>> >> > dmxpixmap.o
>> >> > dmxprop.o dmxscrinit.o dmxshadow.o dmxstat.o dmxsync.o dmxvisual.o
>> >> > dmxwindow.o miinitext.o fbcmap_mi.o panoramiX.o dmx_glxvisuals.o
>> >> > -L/home/XXXX/xbuild/out/lib64 ../../fb/.libs/libfb.a
>> >> > ../../mi/.libs/libmi.a
>> >> > ../../render/.libs/librender.a ../../Xi/.libs/libXi.a
>> >> > ../../xkb/.libs/libxkb.a ../../xkb/.libs/libxkbstubs.a
>> >> > ../../miext/shadow/.libs/libshadow.a
>> >> > ../../miext/damage/.libs/libdamage.a
>> >> > ../../Xext/.libs/libXext.a ../../dix/.libs/libmain.a
>> >> > ../../dix/.libs/libdix.a ../../config/.libs/libconfig.a
>> >> > /usr/lib64/libhal.so
>> >> > /usr/lib64/libdbus-1.so ../../os/.libs/libos.a
>> >> > /usr/lib64/libgcrypt.so
>> >> > -L/usr/lib64 /usr/lib64/libgpg-error.so
>> >> > ../../xfixes/.libs/libxfixes.a
>> >> > glxProxy/libglxproxy.a input/libdmxinput.a config/libdmxconfig.a
>> >> > /home/XXXX/xbuild/out/lib64/libXmuu.so /usr/lib64/libXrender.so
>> >> > /usr/lib64/libX11.so /usr/lib64/libxcb.so /usr/lib64/libXau.so
>> >> > /home/XXXX/xbuild/out/lib64/libXfixes.so
>> >> > /home/XXXX/xbuild/out/lib64/libXi.so
>> >> > /home/XXXX/xbuild/out/lib64/libXext.so
>> >> > /home/XXXX/xbuild/out/lib64/libX11.so
>> >> > /home/XXXX/xbuild/out/lib64/libxcb.so
>> >> > /usr/lib64/libXdmcp.so -ldl /home/XXXX/xbuild/out/lib64/libXfont.so
>> >> > /usr/lib64/libfreetype.so /home/XXXX/xbuild/out/lib64/libfontenc.so
>> >> > -lz
>> >> > /home/XXXX/xbuild/out/lib64/libXau.so
>> >> > /home/XXXX/xbuild/out/lib64/libpixman-1.so
>> >> > /home/XXXX/xbuild/out/lib64/libXdmcp.so -lm -lrt -Wl,-rpath
>> >> > -Wl,/home/XXXX/xbuild/out/lib64 -Wl,-rpath
>> >> > -Wl,/home/XXXX/xbuild/out/lib64
>> >> >
>> >> > /home/XXXX/xbuild/out/lib64/libXi.so: undefined reference to
>> >> > `XESetWireToEventCookie'
>> >> >
>> >> > /home/XXXX/xbuild/out/lib64/libXi.so: undefined reference to
>> >> > `XESetCopyEventCookie'
>> >> > What appears to be happening, I think, is that it is getting
>> >> > libraries
>> >> > like
>> >> > libXrender and so on from /usr/lib64 instead of my build directory.
>> >> > I'm
>> >> > not
>> >> > sure why libtool is doing this. I have my PKG_CONFIG_PATH set to my
>> >> > local
>> >> > build package config path (/home/XXXX/xbuild/out/lib64/pkgconfig) and
>> >> > LD_LIBRARY_PATH is also set to that (modulo the pkgconfig part). I
>> >> > had
>> >> > also
>> >> > built the whole get up without using LD_LIBRARY_PATH. Same results.
>> >> > The
>> >> > only two modules that have this problem are pixman and xserver.
>> >> > Pixman
>> >> > I
>> >> > worked around by passing --disable-gtk to ./configure, since that was
>> >> > the
>> >> > part of the build that was failing. For xserver, it appears to be
>> >> > dmx
>> >> > that's failing.
>> >>
>> >> If I had to guess, the /usr/lib64 is getting hardcoded into one of the
>> >> .la libtool archives installed in /home. Can you do "grep /usr/lib64
>> >> /home/XXXX/xbuild/out/lib64/*.la"? Maybe there's a problem with module
>> >> ordering in xorg.modules. Not sure if that's what's causing the
>> >> reference errors, though.
>> >>
>> >> --
>> >> Dan
>> >
>> > I actually did grep for /usr/lib64 in my ~/xbuild (where the source and
>> > output trees live) and removed all references in the libtool archives
>> > (and
>> > even in libtool itself!). It didn't make a difference.
>>
>> Next time can you record what those references were? That would help
>> solve this problem.
>
> They are now attached. I stripped out some obvious irrelevant lines (like
> /usr/lib64/dbus*). It's down to 254 lines, which hopefully shouldn't be too
> much to handle.
> I was not where I could go back to my Linux installation when I sent the 2nd
> email.
>>
>> > Somehow libtool
>> > found those libraries again. Note that it *has* found some of the
>> > libraries
>> > in the right place and that's the most confusing part. I'm not on Linux
>> > right now, so I can't try diddling with xorg.modules, but I'll try that
>> > again later this evening or tomorrow.
>>
>> Well, you would need to clean up in the xserver tree too since now all
>> the .la files in the tree contain the references to the unwanted
>> libraries.
>
> I'll try a new build in a few minutes and see if deleting the entries in
> *.la files in the source tree as well as the build tree makes any
> difference.
One thing I see that could be causing problems is references to
/usr/lib64/libXdmcp.la. Do you have the log from when you built
libX11? OK, I think I figured it out. In xorg.modules, can you add a
<dep package="libXdmcp"/> under the libxcb module? I think that's
where your host's libXdmcp is being picked up and then polluting the
whole process afterwards. Most people probably wouldn't see that
because the distros remove the .la files in the system lib
directories.
--
Dan
More information about the xorg
mailing list