2016-12-01 10 views
2

次へthis howto私はRaspberry Pi(ARM)用のBluetoothアプリケーションをクロスコンパイルしています。私はlibbluetoothとリンクしようとすると、私は以下のエラーが表示されます。最も簡単なhelloworldアプリケーション(Bluetoothコードなし)でもリンクされません。ARMのクロスコンパイル: '[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 

編集(追加): GLIBCバージョン2.19

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

間違って起こっているのか?

+0

glibcのバージョンは何ですか? – Starl1ght

+1

@ Starl1ght GLIBC 2.19(/ usr/*と/ lib/*をコピーした場所のRPI上) – SBF

+0

しかし、ツールチェーンを使用しているglibcのバージョンは何ですか(-Lはその組み込み関数sysroot)?問題はどこにあるのだろう。 – Notlikethat

答えて

5

昨日ラズベリーパイツールを使用してlibbluetoothにリンクしようとしたときに同じ問題が発生しました。

これを解決するために、私はLinaro開発ツール(6.1.1)の新しいバージョンをラズベリーパイツールリポジトリが提供するものよりもダウンロードしました。

Here is the link to the latest linaro toolchain release

ダウンロード "のgcc-リナロ-6.1.1-2016.08-x86_64_arm-linuxの-gnueabihf.tar.xz" や他のと一緒にあなたのraspberrypi /ツール/アーム-bcm2708 /ディレクトリにそのフォルダを置きますツールチェーン。

次に、新しいディレクトリを指すようにコンパイラ/リンカーのパスを設定します。

(私が使用しています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++)

(編集)私が代わりに使ってみて、トラブルジェシーは、gccのバージョン5または6をサポートしていませんので、コンパイルツールチェーンのこのバージョンで私の実行可能ファイルを実行していましたこのリリースhttps://releases.linaro.org/components/toolchain/binaries/4.9-2016.02/arm-linux-gnueabihf/

+1

または '--sysroot = 'を使ってクロスツールチェーンにパッケージングされたものに頼るのではなく、実際のターゲットライブラリを使用してください。 – Notlikethat

関連する問題