使用gcc -o simplescan simplescan.c -lbluetooth 可以编译程序。
arm-fsl-linux-gnueabi-gcc -o simplescan simplescan.c -lbluetooth
这样编译程序时提示找不头文件。arm-fsl-linux-gnueabi-gcc -o simplescan simplescan.c -I/usr/include/ -I/usr/include/i386-linux-gnu
手动设置头文件路径后,提示找不到库
/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/../lib/gcc/arm-fsl-linux-gnueabi/4.6.2/../../../../arm-fsl-linux-gnueabi/bin/ld: cannot find -lbluetooth
collect2: ld returned 1 exit status手动指定库路径编译
arm-fsl-linux-gnueabi-gcc -o simplescan simplescan.c -I/usr/include/ -I/usr/include/i386-linux-gnu -L/usr/lib/i386-linux-gnu
编译提示
simplescan.c:(.text+0x84): undefined reference tohci_get_route'
hci_open_dev'
simplescan.c:(.text+0x90): undefined reference to
simplescan.c:(.text+0x11c): undefined reference tohci_inquiry'
ba2str'
simplescan.c:(.text+0x170): undefined reference to
simplescan.c:(.text+0x1c8): undefined reference to `hci_read_remote_name'
collect2: ld returned 1 exit status
5.使用arm-fsl-linux-gnueabi-nm -D bluetooth_build/lib/libbluetooth.so.3.13.0
查看库里函数,函数也存在。
000061e8 T hci_get_route
000063bc T hci_inquiry
00006ab4 T hci_le_add_white_list
00006c90 T hci_le_clear_white_list
00008ca0 T hci_le_conn_update
00008b44 T hci_le_create_conn
00006c04 T hci_le_read_white_list_size
00006b5c T hci_le_rm_white_list
00008ac8 T hci_le_set_advertise_enable
00008988 T hci_le_set_scan_enable
00008a10 T hci_le_set_scan_parameters
00005bd0 T hci_lmtostr
00005b98 T hci_lptostr
00006520 T hci_open_dev
这是什么情况?
补充问题:
其实我的bluetooth的链接也已经编译了,使用-L指向我的链接库时,也是提示没有那些函数。
因为gcc编译可以通过,我就想着链接一下gcc用的动态库看可不可以通过。结果还是一样的。
所以百思不得其解。找不到要往哪个方向查了。
使用nm 对比了i386的蓝牙库和用交叉工具编译的蓝牙库,有没太大的差异
这是我的库
file work/bluetooth/bluetooth_build/lib/libbluetooth.so.3.13.0
work/bluetooth/bluetooth_build/lib/libbluetooth.so.3.13.0: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped