I am trying to build the BlueZ bluetooth stack to run on an ARM powered GP2X wiz device. I am cross-compiling for the ARM device on a debian machine.
I have built the complete stack and all its dependencies, (libusb0.12, dbus, glib-2.0, etc) but I run into issues when running them on the target, and it appears dbus doesn't want to play.
The version of glibc on the target is 2.3.6, the version on the development machine is 2.7, but somehow dbus or some dependency is expecting a version of 2.3.3 :
./bluetoothd: /lib/libpthread.so.0: version `GLIBC_2.3.3' not found (required by /mnt/sd/bt/dbus/lib/libdbus-1.so.3)
I have attempted to statically build dbus, however that does not seem to work, in addition to the following config settings, I also set CFLAGS to include -static-libgcc
.
./configure --host=arm --enable-static --prefix=/opt/wiz/dbus/ CC=/opt/arm-openwiz-linux-gnu/bin/arm-openwiz-linux-gnu-gcc --enable-abstract-sockets --without-x
I have also attempted to point the linker to the libraries copied from the target device, but then dbus refuses to configure itself.
LIBS='-l<location of target libc.so.6> -l<location of target libc-2.3.6.so'
I have also attempted to build glibc-2.3.6 on the development machine, but I encounter compiler errors I can't resolve, and I'm not sure if attempting to rebuild libpthread would help me any.
Unfortunately the target device doesn't have /usr/include, otherwise I would have tried directing the compiler to use that.
So, I would like to either statically link everything needed into dbus, or ideally build dbus such that it will accept linking to either the 2.3.3 or 2.3.6 version of glibc on the target device, and am looking for help achieving either of those.
Information I found on linking to specific versions of libraries has me confused as to how to do that while allowing the ./configure scripts to properly do their magic.
Can anyone please help me? Thanks.