bluez藍芽協議棧交叉編譯移植教程(附帶視訊下載地址)

Vincent_Song發表於2011-09-22

由於專案功能的要求,需要移植bluez藍芽協議棧到S3C2410開發平臺上,在移植的過程中出現了很多問題,比如依賴庫的版本不匹配,交叉編譯器版本過高或者過低等問題,為了能讓大家少走移植的彎路,現將自己親測的組合版本以及編譯過程總結如下,同時還附帶有編譯過程的全稱視訊,只是沒有聲音,因為是在實驗室沒有麥,大家將就以下,雖然沒有聲音但是不影響編譯過程,下載地址為:http://115.com/file/aq7pjuh6#
交叉編譯bluez協議棧.avi。

需要的原始碼包有:

bluez-libs-3.36.tar.gz

libxml2-2.6.11.tar.gz

glib-2.16.5.tar.gz

libsndfile-1.0.17.tar.gz

libusb-0.1.12.tar.gz

dbus-1.0.2.tar.gz

bluez-utils-3.36.tar.gz

openobex-1.3.tar.gz

具體的編譯安裝步驟如下:

1、交叉編譯並安裝bluez-libs

進入原始碼包所在路徑,解壓原始碼包到當前路徑,進入原始碼包目錄,依次執行以下命令,在執行命令期間不出現錯誤即可完成交叉編譯安裝工作:

#./configure -prefix=/root/bluez/bluez-libs --host=arm-linux 

#make

#make install

#cp /root/bluez/bluelib/lib/pkgconfig/bluez.pc /usr/lib/pkgconfig

2、交叉編譯並安裝libxml

解壓並進入原始碼目錄,依次執行以下命令:

#./configure --prefix=/root/bluez/libxml --host=arm-linux CC=arm-linux-gcc

#make

#make install 

#cp /root/bluez/libxml/lib/pkgconfig/libxml-2.0.pc  /usr/lib/pkgconfig

3、交叉編譯並安裝glib

解壓並進入原始碼所在目錄,依次執行以下命令:

#apt-get install gettext 

gettext用於系統的國際化和本地化,可以在編譯程式的時候使用本國語言支援(NLS),可以使程式的輸出使用使用者設定的語言而不是英文。 

#apt-get install libglib2.0-dev 

glib 是 GTK+和 GNOME 工程的基礎底層核心程式庫,是一個綜合用途的實用的輕量級的C 程式庫。

#echo ac_cv_type_long_long=yes > arm-linux.cache 

#echo glib_cv_stack_grows=no >> arm-linux.cache 

#echo glib_cv_uscore=no >> arm-linux.cache 

#echo ac_cv_func_posix_getpwuid_r=yes >> arm-linux.cache 

#echo ac_cv_func_posix_getgrgid_r=yes>> arm-linux.cache 

#./configure -prefix=/root/bluez/glib --host=arm-linux CC=arm-linux-gcc    cache-file=arm-linux.cache 

#make 

#make install 

#cp /root/bluez/glib/lib/pkgconfig/* /usr/lib/pkgconfig

4、交叉編譯並安裝libsndfile

解壓並進入原始碼包目錄,依次執行以下命令:

#./configure -prefix=/root/bluez/libsndfile --host=arm-linux CC=arm-linux-gcc

#make

#make install

#cp /root/bluez/libsndfile/lib/pkgconfig/sndfile.pc /usr/lib/pkgconfig

5、交叉編譯並安裝libusb

解壓並進入原始碼包所在目錄,依次執行以下命令:

#./configure -prefix=/root/bluez/libusb --host=arm-linux CC=arm-linux-gc

#make

#make install

#cp /root/bluez/libusb/lib/pkgconfig/libusb.pc /usr/lib/pkgconfig

6、交叉編譯並安裝dbus

解壓並進入原始碼包所在目錄,依次執行以下命令:

#echo ac_cv_have_abstract_sockets=yes > arm-linux.cache

#./configure --host=arm-linux --prefix=/root/bluez/dbus CC=arm-linux-gcc --cache-file=arm-linux.cache --without-x

#make

#make install

#cp /home/song/install_bluez/dbus/lib/pkgconfig/dbus-1.pc /usr/lib/pkgconfig/

7、交叉編譯並安裝bluez-utils

解壓並進入原始碼包所在目錄,依次執行以下操作:

開啟network/bridge.h檔案,新增以下巨集定義:

#define SIOCBRADDBR     0x89a0

#define SIOCBRDELBR     0x89a1 

#define SIOCBRADDIF     0x89a2  

#define SIOCBRDELIF     0x89a3   

開啟input/storage.c檔案,加入以下巨集定義:

#define ENOKEY 161

執行以下命令安裝依賴庫:

#apt-get install libbluetooth-dev

#apt-get install libcwiid1

最後依次執行以下命令完成編譯安裝:

#./configure --prefix=/root/bluez/bluez-utils --host=arm-linux CC="arm-linux-gcc –shared -I/root/bluez/bluez-libs/include -L/root/bluez/bluez-libs/lib" --disable-audio

#make

#make install

8、交叉編譯並安裝openobex

解壓並進入原始碼包所在目錄,依次執行以下命令:

#./configure --prefix=/root/bluez/openobex --host=arm-linux CC="arm-linux-gcc  -I/root/bluez/bluez-libs/include -L/root/bluez/bluez-libs/lib" --enable-bluetooth --disable-usb --enable-apps

#make

#make install

 

總結:bluez-utils的編譯安裝目錄下生成的操作藍芽的工具,bluez-libs安裝目錄下生成的是藍芽程式設計通訊時所以來的庫,其他的都是編譯這兩個所依賴的庫,也就是說需要移植到板子上的只有bluez-libs和bluez-utils安裝目錄下的相關檔案。

 

相關文章