Re: "undefined reference" errors



Michi,


I have more than one version of dbus & hal on my system. One is rooted
under /usr the other under /opt/garnome. Each has their own separate
startup files. [see earlier posts of mine on building with redhat style
init files.]

I start up which ever one I need and have not seen any problems [as of
yet :-)].  When running dbus sessions,  I have found that I can run one
from the code rooted under /usr and another from the code rooted under
/opt/garnome without experiencing any collision problems.  The two dbus
servers listen on *different* ports. Each hal, *knows* which dbus it
wants to talk with.

Applications built from the garball will pick up dbus & hall from the
garball if you build the dependencies.

So... you can keep Ubuntu clean and still build and run GARNOME.


-Joseph

=============================================================================


On Thu, 2005-06-30 at 13:46, Michi wrote:
> Hi garnome-list,
> 
> I have a Garnome install in /opt/gnome2.12 and recently tried to
> install some addon software using libs in /opt/gnome2.12/lib - this
> works fine for *most* apps. I have set the following environment
> variables:
> 
> CFLAGS="-O2 -pipe -march=athlon-xp -m3dnow -I/opt/gnome2.12/include/
> -L/opt/gnome2.12/lib/"
> CPPFLAGS=$CFLAGS
> CXXFLAGS=$CFLAGS
> ACLOCAL_FLAGS="-I /opt/gnome2.12/share/aclocal -I /usr/share/aclocal"
> PATH=$HOME/bin:/opt/gnome2.12/bin:$PATH
> LD_LIBRARY_PATH=/opt/gnome2.12/lib:/usr/lib/mozilla
> PKG_CONFIG_PATH=/opt/gnome2.12/lib/pkgconfig:/usr/lib/pkgconfig
> 
> As said, most apps compile just fine against this setup but I get
> "undefined reference" errors when compiling the latest ooo-build or
> gnome-screensaver. After investigating a bit It seems that the problem
> is the following:
> 
> gcc -Wall -Wchar-subscripts -Wmissing-declarations
> -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wcast-align
> -Wsign-compare -O2 -pipe -march=athlon-xp -m3dnow
> -I/opt/gnome2.12/include/ -Wno-strict-aliasing -Wno-sign-compare -o
> gnome-screensaver gnome-screensaver.o gs-monitor.o gs-watcher-x11.o
> gs-listener-dbus.o gs-manager.o gs-window-x11.o gs-prefs.o gs-job.o
> subprocs.o gs-grab-x11.o dpms.o -Wl,--rpath -Wl,/opt/gnome2.12/lib
> -pthread -Wl,--export-dynamic  -L/opt/gnome2.12/lib/
> -L/opt/gnome2.12/lib /opt/gnome2.12/lib/libgtk-x11-2.0.so
> /opt/gnome2.12/lib/libxml2.so -lz /usr/lib/libdbus-glib-1.so
> /usr/lib/libgobject-2.0.so /usr/lib/libglib-2.0.so
> /usr/lib/libdbus-1.so -lnsl /opt/gnome2.12/lib/libgconf-2.so
> /opt/gnome2.12/lib/libORBit-2.so /opt/gnome2.12/lib/libgmodule-2.0.so
> -ldl /usr/lib/libpopt.so /opt/gnome2.12/lib/libgobject-2.0.so
> /opt/gnome2.12/lib/libgthread-2.0.so -lpthread
> /opt/gnome2.12/lib/libglib-2.0.so -lm -lXss -lXinerama -lXxf86vm
> -lXrandr /usr/lib/libXrender.so -L/usr/X11R6/lib -lX11 -lXxf86misc
> -Wl,--rpath -Wl,/opt/gnome2.12/lib -Wl,--rpath -Wl,/opt/gnome2.12/lib
> /opt/gnome2.12/lib/libgtk-x11-2.0.so: undefined reference to
> `g_mapped_file_free'
> /opt/gnome2.12/lib/libgtk-x11-2.0.so: undefined reference to
> `g_mapped_file_new'/opt/gnome2.12/lib/libgtk-x11-2.0.so: undefined
> reference to `g_mapped_file_get_contents'
> collect2: ld returned 1 exit status
> 
> So there are 3 undefined references to symbols found in
> libglib-2.0.so, as shown here:
> 
> $ nm /opt/gnome2.12/lib/libglib-2.0.so | grep g_mapped_file_free
> 000297d0 T g_mapped_file_free
> 000297d0 t IA__g_mapped_file_free
> 
> The relevant line in the Makefile is:
> 
> GNOME_SCREENSAVER_LIBS = -Wl,--rpath -Wl,/opt/gnome2.12/lib -pthread
> -L/opt/gnome2.12/lib -lgtk-x11-2.0 -lxml2 -lpthread -lz -lm
> -ldbus-glib-1 -lgconf-2
> 
> So, if I'm interpretating right, -ldbus-glib-1 is pulling in
> /usr/lib/libglib-2.0.so as a dependency. Unfortunatly, libglib-2.0.so
> as shipped by ubuntu doesn't contain symbols and the build fails:
> 
> $ nm /usr/lib/libglib-2.0.so | grep g_mapped_file_free
> nm: /usr/lib/libglib-2.0.so: no symbols
> 
> Editing the Makefile to
> 
> GNOME_SCREENSAVER_LIBS = -Wl,--rpath -Wl,/opt/gnome2.12/lib -pthread
> -L/opt/gnome2.12/lib -lgtk-x11-2.0 -lxml2 -lpthread -lz -lm -lgconf-2
> -ldbus-glib-1
> 
> solves the problem, I guess installing dbus to /opt/gnome2.12 would do
> so, too, but this would mean I was forced to always be in sync with
> the ubuntu version, as replacing the dbus deamon is a no-no.
> 
> Does anyone have an idea how I can solve this mess? Is there a way to
> tell the system not to use libs from a given directory? Naturally I
> need most libs tom /usr/lib, but I don't want those used that I also
> have in my Garnome install...
> 
> Thx,
> Michi
-- 
joseph_sacco[at]comcast[dot]net




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]