由于单篇文章篇幅过长 发布会失败,故在此记录平时不同项目中使用wpa时遇到的问题及解决方法
常见问题:
a) 编译wpa_supplicant时提示libnl库中依赖的部分函数未实现如下所示
libnl-3.5.0/_install/lib/libnl-3.a(libnl_3_la-socket.o): undefined reference to symbol 'pthread_rwlock_wrlock@@GLIBC_2.4'
解决办法:缺少依赖库。解题思路度娘,其次在wpa_supplicant Makefile中添加LIBS+=XXX或-lxxxxx增加依赖库
b)编译wpa_supplicant时提示libnl库找不到,
/usr/bin/ld: cannot find -lnl
collect2: ld returned 1 exit status
make: *** [wpa_supplicant] Error 1
解决办法:根本原因是编译wpa_supplicant时未链接到libnl库
导致该问题的行为可能有很多个,我的问题是在编译前把deconfig中CONFIG_LIBNL32=y修改为CONFIG_LIBNL35=y;因为我使用的是libnl是3.5版本 实际上不需要修改,因为wpa_supplicant在链接libnl时只识别CONFIG_LIBNL32 编译选项, 详细情况可以grep CONFIG_LIBNL32 查看即知道 (另,此类问题与传入路径也有关,路径尽可能使用绝对路径)
#Use libnl v2.0 (or 3.0) libraries.
#CONFIG_LIBNL20=y
#Use libnl 3.2 libraries (if this is selected, CONFIG_LIBNL20 is ignored)
**CONFIG_LIBNL32=y**