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

编译Binwalk依赖sasquatch时build.sh触发缩进相关编译错误

解决Sasquatch编译时的misleading-indentation错误

错误原因

这个编译错误是由于GCC的-Werror=misleading-indentation检测规则触发的:代码中if(swap)语句没有用大括号包裹后续代码,但下一行的read_fs_bytes函数调用缩进层级和if块一致,编译器判定为缩进误导逻辑,且当前编译配置把所有警告强制转为错误,导致编译失败。

解决方法

方法1:修复代码缩进逻辑(推荐)

  1. 进入sasquatch目录:
    cd sasquatch
    
  2. 打开unsquashfs.c文件,定位到第1835-1841行附近的代码:
    原代码结构类似:
    if(swap)
        // 此处可能存在空行或其他注释
        read_fs_bytes(fd, SQUASHFS_START, sizeof(struct squashfs_super_block), ...);
    
  3. 给if(swap)块添加大括号,明确包裹属于该条件的代码:
    if(swap) {
        read_fs_bytes(fd, SQUASHFS_START, sizeof(struct squashfs_super_block), ...);
        // 如果还有其他属于该if块的代码,也一并放入大括号内
    }
    
  4. 重新执行编译脚本:
    ./build.sh
    

方法2:临时禁用该警告的错误转换

如果不想修改代码,可以通过调整编译参数绕过这个检测:

  1. 直接在执行build.sh时覆盖CFLAGS参数:
    CFLAGS="-Wno-error=misleading-indentation" ./build.sh
    
  2. 或者修改sasquatch目录下的Makefile:找到包含-Werror的CFLAGS配置行,添加-Wno-error=misleading-indentation,保存后重新编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:45:32