在LinkIt Smart 7688 SDK编译libffi时遇sys/xattr.h缺失错误求助
解决LinkIt Smart 7688 SDK编译libffi的错误与警告
先来说那个导致编译中断的致命错误:libattr/attr_copy_fd.c:25:24: fatal error: sys/xattr.h: No such file or directory
这个问题的核心是libffi默认启用了xattr(扩展文件属性)相关功能,但LinkIt Smart 7688的交叉编译工具链是针对嵌入式设备精简过的OpenWrt环境,并没有提供sys/xattr.h这个头文件。你可以按下面的步骤解决:
配置时显式禁用xattr支持:
运行./configure命令时添加--disable-xattr参数,完整命令示例如下(记得替换成你自己的交叉编译目标架构和其他配置参数):./configure --host=mipsel-openwrt-linux --disable-xattr [你的其他配置参数]这是最稳妥的方式,毕竟嵌入式场景下很少用到xattr功能。
如果禁用后仍有问题,可以手动补充头文件:从OpenWrt源码包中提取
sys/xattr.h,复制到你的SDK工具链的include/sys目录下,但这种方法不如直接禁用功能来得简洁。
再说说那些重复出现的警告:Config-build.in:xxxx:warning: defaults for choice values not supported
这些警告是autoconf配置脚本的语法兼容性问题——当前使用的autoconf版本不支持脚本里给choice选项设置默认值的写法,但这些警告完全不会影响编译结果和最终生成的libffi库功能。如果你实在想处理:
- 直接忽略:只要致命错误解决,编译会正常完成,警告只是脚本层面的提示,不影响实际功能。
- 修改配置脚本(可选):找到Config-build.in中对应的choice段落,删除里面类似
default "xxx"的默认值设置,之后重新运行autoreconf生成新的配置脚本。不过这种操作需要对autoconf语法有一定了解,性价比不高,更推荐直接忽略。
内容的提问来源于stack exchange,提问作者骆锐洪
相关产品推荐
相关产品推荐

