2016-12-01 7 views
2

Nach this howto Ich Cross-Compiling eine Bluetooth-Anwendung für Raspberry Pi (ARM). Wenn ich versuche, mit libbluetooth zu verbinden, erhalte ich den Fehler unten. Selbst die einfachste Helloworld-Anwendung (ohne Bluetooth-Code) wird nicht verlinkt.Cross-compile für ARM: undefinierter Verweis auf '[email protected]_2.15'

arm-linux-gnueabihf-g++ -c hello.cpp -o hello.o 
arm-linux-gnueabihf-g++ hello.o -o hello -lbluetooth -L/home/sbf/raspberrypi/rootfs/usr/lib/arm-linux-gnueabihf 
/home/sbf/raspberrypi/rootfs/usr/lib/arm-linux-gnueabihf/libbluetooth.so: undefined reference to `[email protected]_2.15' 


[email protected] ~/raspberrypi/projects/test $ ls -al /home/sbf/raspberrypi/rootfs/usr/lib/arm-linux-gnueabihf/libbluetooth* 
-rw-r--r-- 1 sbf sbf 132886 May 27 2016 /home/sbf/raspberrypi/rootfs/usr/lib/arm-linux-gnueabihf/libbluetooth.a 
lrwxrwxrwx 1 sbf sbf  23 Nov 24 21:20 /home/sbf/raspberrypi/rootfs/usr/lib/arm-linux-gnueabihf/libbluetooth.so -> libbluetooth.so.3.17.11 
lrwxrwxrwx 1 sbf sbf  23 Nov 24 21:20 /home/sbf/raspberrypi/rootfs/usr/lib/arm-linux-gnueabihf/libbluetooth.so.3 -> libbluetooth.so.3.17.11 
-rw-r--r-- 1 sbf sbf 103376 May 27 2016 /home/sbf/raspberrypi/rootfs/usr/lib/arm-linux-gnueabihf/libbluetooth.so.3.17.11 

Edit (hinzugefügt): GLIBC Version 2,19

[email protected]:~ $ ldd --version 
ldd (Debian GLIBC 2.19-18+deb8u6) 2.19 

Was falsch los ist?

+0

Was ist die Version von glibc? – Starl1ght

+1

@ Starl1ght GLIBC 2.19 (auf RPi von wo ich kopiert '/ usr/*' und '/ lib/*') – SBF

+0

Aber welche Version von glibc ist die Cross-Toolchain verwenden (seit -L wird nicht überschrieben werden, seine eingebauten Sysroot) Ich wette, da liegt das Problem. – Notlikethat

Antwort

5

Ich hatte das gleiche Problem gestern versucht, libbluetooth mit Raspberry Pi-Tools zu verknüpfen.

Um das Problem zu lösen, habe ich eine neuere Version der Linaro dev tools (6.1.1) heruntergeladen, als die, die von der Raspberry Pi Tools Repository bereitgestellt wird.

Here is the link to the latest linaro toolchain release

Download "gcc-Linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabihf.tar.xz" und legen Sie diesen Ordner in Ihrem Raspberry Pi/tools/Arm-bcm2708/Verzeichnis zusammen mit den anderen Werkzeugketten.

Setzen Sie dann Compiler/Linker-Pfade, um auf das neue Verzeichnis zu zeigen.

(Ich bin mit cmake)

SET(CMAKE_C_COMPILER $ENV{HOME}/raspberrypi/tools/arm-bcm2708/gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc) SET(CMAKE_CXX_COMPILER $ENV{HOME}/raspberrypi/tools/arm-bcm2708/gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++)

(edit) Ich hatte Probleme laufen meine ausführbare Datei mit dieser Version des Toolchain kompiliert seit jessie nicht gcc Versionen 5 oder 6. Stattdessen unterstützt versuchen Sie es mit Diese Version https://releases.linaro.org/components/toolchain/binaries/4.9-2016.02/arm-linux-gnueabihf/

+1

Oder benutze einfach '--sysroot = ' to Verwenden Sie die echten Zielbibliotheken, anstatt sich auf diejenigen zu verlassen, die mit der Cross-Toolchain verpackt sind. – Notlikethat

Verwandte Themen