undefined symbols in i915_dri.so

Werner LEMBERG wl at gnu.org
Tue Apr 14 23:39:55 PDT 2009


[xorg git build two hours ago]

I used the attached script (which is an extension of what can be found
at http://wiki.x.org/wiki/Development/git) to build an xserver on my
GNU/Linux box (SuSE 11.1 running kernel 2.6.27.21); I then start it
with

  export LD_LIBRARY_PATH=/usr/local/x11/lib
  startx -- /usr/local/x11/bin/Xorg \
            -verbose \
            -config /etc/X11/xorg.conf.my

However, I find this message in the X log file:

  (EE) AIGLX error: dlopen of /usr/local/x11/lib/dri/i915_dri.so failed
                    (/usr/local/x11/lib/dri/i915_dri.so:
                     undefined symbol: _glapi_get_proc_address)

Indeed, doing

  LD_LIBRARY_PATH=/usr/local/x11/lib \
  ldd -d -r i915_dri.so

gives

  undefined symbol: _glapi_check_multithread       (./i915_dri.so)
  undefined symbol: _glapi_get_proc_address        (./i915_dri.so)
  undefined symbol: _glapi_Context                 (./i915_dri.so)
  undefined symbol: _glapi_Dispatch                (./i915_dri.so)
  undefined symbol: _glapi_get_dispatch_table_size (./i915_dri.so)
  undefined symbol: _glapi_get_dispatch            (./i915_dri.so)
  undefined symbol: _glapi_get_context             (./i915_dri.so)
  undefined symbol: _glapi_add_dispatch            (./i915_dri.so)
  undefined symbol: _glapi_set_warning_func        (./i915_dri.so)
  undefined symbol: _glapi_set_context             (./i915_dri.so)
  undefined symbol: _glapi_noop_enable_warnings    (./i915_dri.so)
  undefined symbol: _glapi_set_dispatch            (./i915_dri.so)

Of course these symbols are in the newly compiled libGL library (they
are even in the /usr/lib version of that library).

Apparently the build script is missing something.  Please advise.


    Werner

-------------- next part --------------
export TRASH_OFF=YES

PREFIX="/usr/local/x11"
PKG_CONFIG_PATH="/usr/local/x11/lib/pkgconfig"

# Attempt to detect proper concurrency level
CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
CONCURRENCY_LEVEL=$(( $CPU_CORES + 1 ))

MAKE="make"

REPOS="\
git://git.freedesktop.org/git/xorg/util/macros \
git://git.freedesktop.org/git/xorg/proto/x11proto \
git://git.freedesktop.org/git/xorg/proto/damageproto \
git://git.freedesktop.org/git/xorg/proto/xextproto \
git://git.freedesktop.org/git/xorg/proto/fontsproto \
git://git.freedesktop.org/git/xorg/proto/videoproto \
git://git.freedesktop.org/git/xorg/proto/renderproto \
git://git.freedesktop.org/git/xorg/proto/inputproto \
git://git.freedesktop.org/git/xorg/proto/xf86vidmodeproto \
git://git.freedesktop.org/git/xorg/proto/xf86dgaproto \
git://git.freedesktop.org/git/xorg/proto/xf86driproto \
git://git.freedesktop.org/git/xorg/proto/xcmiscproto \
git://git.freedesktop.org/git/xorg/proto/scrnsaverproto \
git://git.freedesktop.org/git/xorg/proto/bigreqsproto \
git://git.freedesktop.org/git/xorg/proto/resourceproto \
git://git.freedesktop.org/git/xorg/proto/compositeproto \
git://git.freedesktop.org/git/xorg/proto/fixesproto \
git://git.freedesktop.org/git/xorg/proto/evieproto \
git://git.freedesktop.org/git/xorg/proto/kbproto \
git://git.freedesktop.org/git/xorg/lib/libxtrans \
git://git.freedesktop.org/git/xorg/lib/libX11 \
git://git.freedesktop.org/git/xorg/lib/libXext \
git://git.freedesktop.org/git/xorg/lib/libxkbfile \
git://git.freedesktop.org/git/xorg/lib/libfontenc \
git://git.freedesktop.org/git/xorg/lib/libXfont \
git://git.freedesktop.org/git/xorg/lib/libXfixes \
git://git.freedesktop.org/git/xorg/lib/libXdamage \
git://git.freedesktop.org/git/xorg/lib/libXv \
git://git.freedesktop.org/git/xorg/lib/libXvMC \
git://git.freedesktop.org/git/xorg/lib/libXxf86vm \
git://git.freedesktop.org/git/xorg/lib/libXinerama \
git://git.freedesktop.org/git/xorg/proto/dri2proto \
git://git.freedesktop.org/git/xorg/proto/glproto \
git://git.freedesktop.org/git/xorg/lib/libpciaccess \
git://git.freedesktop.org/git/pixman \
git://git.freedesktop.org/git/xcb/proto \
git://git.freedesktop.org/git/xcb/pthread-stubs \
git://git.freedesktop.org/git/xcb/libxcb \
git://git.freedesktop.org/git/xorg/proto/randrproto \
git://git.freedesktop.org/git/mesa/drm \
git://git.freedesktop.org/git/mesa/mesa \
git://git.freedesktop.org/git/xorg/xserver \
git://git.freedesktop.org/git/xorg/driver/xf86-input-mouse \
git://git.freedesktop.org/git/xorg/driver/xf86-input-keyboard \
git://git.freedesktop.org/git/xorg/driver/xf86-video-intel \
git://git.freedesktop.org/git/xkeyboard-config \
git://git.freedesktop.org/git/xorg/app/xkbcomp"

modules="\
fontsproto \
x11proto \
xextproto \
videoproto \
renderproto \
inputproto \
damageproto \
xf86vidmodeproto \
xf86dgaproto \
xf86driproto \
xcmiscproto \
scrnsaverproto \
bigreqsproto \
resourceproto \
compositeproto \
resourceproto \
evieproto \
kbproto \
fixesproto \
libxtrans \
proto \
pthread-stubs \
libxcb \
libX11 \
libXext \
libxkbfile \
libfontenc \
libXfont \
libXv \
libXvMC \
libXxf86vm \
libXinerama \
libXfixes \
libXdamage \
dri2proto \
glproto \
libpciaccess \
pixman \
randrproto"

other_git_repos="\
drm \
mesa \
xserver \
xf86-input-mouse \
xf86-input-keyboard \
xf86-video-intel \
xkeyboard-config \
xkbcomp"

init()
{
	for repo in $REPOS; do
		echo "Cloning $repo"
		git clone $repo
	done
	cd macros
	echo "Building macros"
	./autogen.sh --prefix="$PREFIX"
	($MAKE)
	make install
	cd ..
}

update_modules()
{
	for module in $modules; do
		echo "Updating $module"
		cd $module
		git pull
		cd ..
	done
}

update_other_git_repos()
{
	for repo in $other_git_repos; do
		echo "Updating $repo"
		cd $repo
		git pull
		cd ..
	done
}

clean_repos()
{
	for repo in $modules $other_git_repos; do
		echo ======================
		echo "Cleaning $repo"
		echo ======================
		cd $repo
		make distclean
		cd ..
	done
	cd drm
	# assuming you're on Linux, otherwise use bsd-core
	make -C linux-core clean
	cd ..
}

build_and_install ()
{
	export ACLOCAL="aclocal -I $PREFIX/share/aclocal"
	export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig"

	for i in $modules; do
		cd $i
		echo ======================
		echo configuring $i
		echo ======================
		./autogen.sh --prefix="$PREFIX"
		if [ $? -ne 0 ]; then
			echo "Failed to configure $i."
			exit
		fi
		echo ======================
		echo building $i
		echo ======================
		($MAKE)
		echo ======================
		echo installing $i
		echo ======================
		make install
		cd ..
	done
# build drm
	cd drm
	echo ======================
	echo configuring drm
	echo ======================
	./autogen.sh --prefix="$PREFIX"
	if [ $? -ne 0 ]; then
		echo "Failed to configure drm."
		exit
	fi
	echo ======================
	echo building drm
	echo ======================
	($MAKE)
	# assuming you're on Linux, otherwise use bsd-core
	make -C linux-core
	echo ======================
	echo installing drm
	echo ======================
	make install
	cd ..
# build mesa
	cd mesa
	echo ======================
	echo configuring mesa
	echo ======================
	./autogen.sh --prefix="$PREFIX" \
		     --with-driver=dri \
		     --disable-glut \
		     --with-state-trackers="egl,dri2"
	if [ $? -ne 0 ]; then
		echo "Failed to configure Mesa."
		exit
	fi
	echo ======================
	echo building mesa
	echo ======================
	($MAKE)
	echo ======================
	echo installing mesa
	echo ======================
	make install
	mkdir -p $PREFIX/bin
	install -m755 progs/xdemos/{glxinfo,glxgears} $PREFIX/bin/
	cd ..
# build xserver
	cd xserver
	echo ======================
	echo configuring xserver
	echo ======================
	./autogen.sh --prefix="$PREFIX" \
		     --enable-builtin-fonts
	if [ $? -ne 0 ]; then
		echo "Failed to configure X server."
		exit
	fi
	echo ======================
	echo building xserver
	echo ======================
	($MAKE)
	echo ======================
	echo installing xserver
	echo ======================
	make install
	chown root $PREFIX/bin/Xorg
	chmod +s $PREFIX/bin/Xorg
	cd ..
# build mouse
	cd xf86-input-mouse
	echo ======================
	echo configuring mouse
	echo ======================
	./autogen.sh --prefix="$PREFIX"
	if [ $? -ne 0 ]; then
		echo "Failed to configure mouse."
		exit
	fi
	echo ======================
	echo building mouse
	echo ======================
	($MAKE)
	echo ======================
	echo installing mouse
	echo ======================
	make install
	cd ..
# build keyboard
	cd xf86-input-keyboard
	echo ======================
	echo configuring keyboard
	echo ======================
	./autogen.sh --prefix="$PREFIX"
	if [ $? -ne 0 ]; then
		echo "Failed to configure keyboard."
		exit
	fi
	echo ======================
	echo building keyboard
	echo ======================
	($MAKE)
	echo ======================
	echo installing keyboard
	echo ======================
	make install
	cd ..
# build intel
	cd xf86-video-intel
	echo ======================
	echo configuring intel
	echo ======================
	./autogen.sh --prefix="$PREFIX"
	if [ $? -ne 0 ]; then
		echo "Failed to configure intel."
		exit
	fi
	echo ======================
	echo building intel
	echo ======================
	($MAKE)
	echo ======================
	echo installing intel
	echo ======================
	make install
	cd ..
}

case "$1" in
	init)
		init
		;;
	build)
		clean_repos
		build_and_install
		;;
	update)
		update_modules
		update_other_git_repos
		;;
	*)
		echo "Usage: $0 init | build | update"
		exit 3
esac

# eof


More information about the xorg mailing list