Ubuntu20.04编译Alexa Auto SDK报gnulib fseeko.c错误如何解决
问题原因
该报错是Ubuntu 20.04自带的glibc版本(≥2.29)与Alexa Auto SDK 3.2依赖的m4 1.4.18内置的旧版gnulib不兼容导致,旧版gnulib未适配高版本glibc的stdio实现,因此触发了手动移植的报错。
解决步骤
- 第一步:先清理之前的构建缓存,避免脏文件干扰后续构建
rm -rf ~/git/alexa-auto-sdk/builder/build - 第二步:修改m4-native的Yocto构建配方,添加兼容性编译参数
- 先备份原有配方文件防止出错
cp /home/hannes/oe-core/meta/recipes-devtools/m4/m4-native_1.4.18.bb /home/hannes/oe-core/meta/recipes-devtools/m4/m4-native_1.4.18.bb.bak - 用文本编辑器打开
/home/hannes/oe-core/meta/recipes-devtools/m4/m4-native_1.4.18.bb,在文件末尾追加以下内容:do_configure_prepend() { # 跳过gnulib的兼容性检测,直接使用系统glibc已实现的函数 echo "gl_cv_func_fflush_stdin=yes" >> ${S}/config.cache echo "ac_cv_func_fseeko=yes" >> ${S}/config.cache export CFLAGS="$CFLAGS -D_GNU_SOURCE" }
- 先备份原有配方文件防止出错
- 第三步:重新执行原编译命令即可
./builder/build.sh android -t androidx86-64 --android-api 28
补充说明
如果后续构建过程中碰到其他依赖包出现同类gnulib兼容性报错,都可以参照该思路给对应包的构建配方添加对应的预定义宏跳过兼容性检测即可。
内容的提问来源于stack exchange,提问作者hannes ach
相关产品推荐
相关产品推荐

