• WPA-Supplicant 极简交叉编译


    问题一:
    Could not connect to wpa_supplicant - re-trying
    答:
    1、wpa_supplicant 需要首先启动 (不需要关注是否能够连上设备)
    举例:wpa_supplicant -Dnl8021 -iwlan0 -c /etc/wpa_supplicant.conf
    2、确认 /var/run/wpa_supplicant/wlan0 权限是不是 root:root
    3、这时候就可以进行测试了
    问题二:
    WPA: 4-Way Handshake failed - pre-shared key may be incorrect
    可以通过以下几点逐一排查
    1、密码是否正确
    2、确认芯片底层是否支持对应协议,(一些老芯片仅能支持 WPA/WPA2 但不支持 WPA2-PSK 等协议)
    3、对接路由器的协议以及信号类型,(老芯片不支持 5G 信号仅能支持 2.4G 信号)
    4、最后根据 wpa_supplicant 自带的 example 尝试调整各个参数(下载后直接看)

    注意: 交叉编译内容应该与交叉编译器时间相近
    下载以下内容:
    expat-2.4.8
    dbus-1.14.0
    libnl-3.7.0
    openssl-1.1.1
    wpa_supplicant 

    逐一编译以下内容:

    ## expat-2.4.8
    1. # 编译脚本, 放到文件夹内
    2. echo "xorg_cv_malloc0_returns_null=yes" > arm-linux.cache
    3. ./configure --cache-file=arm-linux.cache --prefix=/home/worker/workspace/wifilib \
    4. --host=arm-linux-gnueabihf
    5. rm arm-linux.cache
    6. make 
    7. make install

    ## dbus-1.14.0
    1. make distclean
    2. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/worker/workspace/wifilib
    3. export PKG_CONFIG_PATH=/home/worker/workspace/wifilib/lib/pkgconfig
    4. ./configure --prefix=/home/worker/workspace/wifilib --host=arm-linux-gnueabihf --without-x \
    5. CFLAGS=-I/home/worker/workspace/wifilib/include LDFLAGS=-L/home/worker/workspace/wifilib/lib
    ① 运行脚本
    配置完成之后输出,要点请检查和确认
    ② 执行 make & make install 
    ## libnl-3.7.0
    1. ./configure --prefix=/home/worker/workspace/wifilib --host=arm-linux-gnueabihf
    2. make
    3. make install
    ## openssl-1.1.1q 
    注意——32位 arm 芯片
    1. setarch i386 ./config --prefix=/home/worker/workspace/wifilib --cross-compile-prefix=arm-linux-gnueabihf- \
    2. no-asm shared
    注意——64位 arm 芯片
    1. ./config --prefix=/home/worker/workspace/wifilib --cross-compile-prefix=arm-linux-gnueabihf- \
    2. no-asm shared
    ① 运行脚本
    ② 移除 64bit / 32bit 出现的 -m64/-m32 
    ③ make & make install
    ## wpa_supplicant
    ① 解压后,进入 -> wpa_supplicant-2.10 -> wpa_supplicant
    ② 运行(我是 linux 平台) {cp    defconfig     .config}
    ③ 修改 Makefile
    1. 添加以下内容:
    2. CFLAGS += -I/home/worker/workspace/wifilib/include
    3. LIBS += -L/home/worker/workspace/wifilib/lib
    4. CC=arm-linux-gnueabihf-gcc
    ④ 调整以下 wifilib 库中文件
    1)把 wifilib/lib/dbus-1.0/include/dbus 下的文件复制到 wifilib/include/dbus-1.0 里
    ⑤ wpa_supplicant-2.10 -> wpa_supplicant 启动终端 然后运行以下指令
    1.   export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/worker/workspace/wifilib
    2.  export PKG_CONFIG_PATH=/home/worker/workspace/wifilib/lib/pkgconfig
    3.  make -j32
    当前目录底下就会生成 wpa_cli & wpa_supplicant & wpa_passphrase 三个文件

  • 相关阅读:
    区分何时使用内连接或者外连接
    重温C语言十三------动态内存分配
    .NET宝藏API之:IHostedService,后台任务执行
    Kafka 3.0 面试 + 基础知识 + 原理
    【 C++ 】智能指针
    【见闻录系列】我所理解的搜索业务二三事
    C语言——分支语句和循环语句
    我的NAS方案及使用的功能
    Endnote 用户自定义Field
    JKPacket权威指南——学习建议
  • 原文地址:https://blog.csdn.net/qq_24890953/article/details/126544011