在 Ubuntu 20.04 上构建 Alexa Auto SDK 时将 gnulib fseeko.c 移植到您的平台

port gnulib fseeko.c to your platform while building the Alexa Auto SDK on Ubuntu 20.04

构建 Alexa Auto SDK https://github.com/alexa/alexa-auto-sdk/blob/3.2/builder/README.md

使用 Ubuntu 20.04(我没有更多的 18.04)我 运行 和

./builder/build.sh android -t androidx86-64 --android-api 28

进入

| ../../m4-1.4.18/lib/freadahead.c: In function ‘freadahead’:
| ../../m4-1.4.18/lib/freadahead.c:92:3: error: #error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib."
|    92 |  #error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib."
|       |   ^~~~~
| make[3]: *** [Makefile:1915: freadahead.o] Error 1
| make[3]: *** Waiting for unfinished jobs....
| ../../m4-1.4.18/lib/fseeko.c: In function ‘rpl_fseeko’:
| ../../m4-1.4.18/lib/fseeko.c:110:4: error: #error "Please port gnulib fseeko.c to your platform! Look at the code in fseeko.c, then report this to bug-gnulib."
|   110 |   #error "Please port gnulib fseeko.c to your platform! Look at the code in fseeko.c, then report this to bug-gnulib."
|       |    ^~~~~
| make[3]: *** [Makefile:1915: fseeko.o] Error 1
| make[3]: Leaving directory '/home/hannes/git/alexa-auto-sdk/builder/build/tmp-android-28/work/x86_64-linux/m4-native/1.4.18-r0/build/lib'
| make[2]: *** [Makefile:1674: all] Error 2
| make[2]: Leaving directory '/home/hannes/git/alexa-auto-sdk/builder/build/tmp-android-28/work/x86_64-linux/m4-native/1.4.18-r0/build/lib'
| make[1]: *** [Makefile:1572: all-recursive] Error 1
| make[1]: Leaving directory '/home/hannes/git/alexa-auto-sdk/builder/build/tmp-android-28/work/x86_64-linux/m4-native/1.4.18-r0/build'
| make: *** [Makefile:1528: all] Error 2
| ERROR: oe_runmake failed
| WARNING: exit code 1 from a shell command.
| ERROR: Function failed: do_compile (log file is located at /home/hannes/git/alexa-auto-sdk/builder/build/tmp-android-28/work/x86_64-linux/m4-native/1.4.18-r0/temp/log.do_compile.2647129)
ERROR: Task (/home/hannes/oe-core/meta/recipes-devtools/m4/m4-native_1.4.18.bb:do_compile) failed with exit code '1'

这是 /home/hannes/git/alexa-auto-sdk/builder/build/tmp-android-28/work/x86_64-linux/m4-native/1.4.18-r0/temp/log.do_compile.2647129

的最后重要部分

有人知道怎么解决吗?

这是 GNU m4 1.4.18 和更新的 glibc 头文件之间的互操作性问题。

它已在 GNU m4 1.4.19 中修复,可从 https://ftp.gnu.org/gnu/m4/ 和 GNU 镜像中获得。

我在 yocto 中编译时遇到了类似的问题。

请删除此行

#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */

并在文件中添加这一行。

#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */

还更新了 stdio-impl.h:

/* Glibc 2.28 made _IO_IN_BACKUP private.  For now, work around this
problem by defining it ourselves.  FIXME: Do not rely on glibc
internals.  */

#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN
# define _IO_IN_BACKUP 0x100
#endif