You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为Hi3518ev200交叉编译wpa_supplicant v2.10遇链接错误求助

交叉编译wpa_supplicant v2.10 for Hi3518ev200时的dbus链接错误解决建议

问题背景

尝试为Hi3518ev200交叉编译最新版wpa_supplicant v2.10,已完成openssl和libnl的编译,但编译wpa_supplicant时出现链接错误:

CC  ../src/drivers/driver_wext.c
  CC  ../src/drivers/drivers.c
  CC  ../src/l2_packet/l2_packet_linux.c
/usr/lib/dbus-1.0/debug-build/lib/libdbus-1.so: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
make: *** [Makefile:1894: wpa_supplicant] Error 1

当前dbus-1的编译参数及库信息:

  • pkg-config输出:
    root@Debian12:/home/dev/yi-hack-v5/src/wpa/wpa_supplicant-2.10/wpa_supplicant# pkg-config --libs --cflags dbus-1
    -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/debug-build/lib/dbus-1.0/include -L/usr/lib/dbus-1.0/debug-build/lib -ldbus-1 
    
  • 库文件格式:
    root@Debian12:/home/dev/yi-hack-v5/src/wpa/wpa_supplicant-2.10/wpa_supplicant# file /usr/lib/dbus-1.0/debug-build/lib/libdbus-1.so.3.32.4 
    /usr/lib/dbus-1.0/debug-build/lib/libdbus-1.so.3.32.4: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=3afa1524c30e559f584583e19c3b73788d28354a, stripped 
    
  • 软链接列表:
    root@Debian12:/home/dev/yi-hack-v5/src/wpa/wpa_supplicant-2.10/wpa_supplicant# ls -l /usr/lib/dbus-1.0/debug-build/lib/
    total 1872
    drwxr-xr-x 3 root root    4096 Nov 15 07:43 cmake
    drwxr-xr-x 3 root root    4096 Nov 15 07:43 dbus-1.0
    -rw-r--r-- 1 root root 1310198 Sep 16 11:03 libdbus-1.a
    lrwxrwxrwx 1 root root      19 Sep 16 11:03 libdbus-1.so -> libdbus-1.so.3.32.4
    lrwxrwxrwx 1 root root      19 Sep 16 11:03 libdbus-1.so.3 -> libdbus-1.so.3.32.4
    -rw-r--r-- 1 root root  593656 Sep 16 11:03 libdbus-1.so.3.32.4
    drwxr-xr-x 2 root root    4096 Nov 15 07:43 pkgconfig
    

已尝试Debian 9编译,结果类似;考虑使用wifi_tools_static项目,但该项目主要适配Android,需自行调整。

核心原因

当前系统使用的dbus库是x86-64架构的,而Hi3518ev200是ARM架构,交叉编译时必须使用对应目标架构的库,主机系统的库无法被ARM交叉编译器识别。

解决建议

1. 交叉编译适配ARM架构的dbus库

  • 下载与wpa_supplicant v2.10兼容的dbus源码(推荐v1.14.x系列)
  • 配置交叉编译环境,指定Hi3518ev200对应的交叉编译器(如arm-hisiv300-linux-gcc),并设置安装路径到自定义交叉编译库目录:
    ./configure --host=arm-hisiv300-linux \
                --prefix=/path/to/your/cross-libs \
                --disable-debug \
                --disable-xml-docs \
                --disable-doxygen-docs \
                --without-x
    
  • 执行编译安装:make && make install

2. 配置wpa_supplicant使用交叉编译的dbus库

  • 导出交叉编译库的pkgconfig路径,确保pkg-config能找到ARM版本的dbus配置:
    export PKG_CONFIG_PATH=/path/to/your/cross-libs/lib/pkgconfig
    
  • 进入wpa_supplicant目录,清理之前的编译文件:make clean
  • 重新生成配置文件(如使用基础wifi配置):make defconfig-wifi,确保CONFIG_DBUS=y(如果需要dbus功能)
  • 执行编译:make

3. 可选:禁用dbus支持

如果你的场景不需要dbus功能,可以直接修改wpa_supplicant的defconfig文件,注释掉CONFIG_DBUS=y这一行,重新编译即可跳过dbus库的链接。

4. 调整wifi_tools_static项目适配Hi3518ev200

  • 修改项目Makefile中的交叉编译器为Hi3518ev200的ARM编译器
  • 替换依赖库路径为你已交叉编译好的openssl、libnl(及dbus,若需要)的路径
  • 移除Android专属的编译选项(如Android系统头文件、链接选项),适配Hi3518ev200的内核版本和根文件系统环境

内容的提问来源于stack exchange,提问作者alienatedsec

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:44:51