代码之家  ›  专栏  ›  技术社区  ›  abhiarora

在使用yocto构建linux映像时出现“memfd戋create的静态声明跟随非静态声明”错误

  •  0
  • abhiarora  · 技术社区  · 7 年前

    我正在使用 Yocto 建立系统 Ubuntu 18.04 主机。我正在遵循提供的步骤 here . 我正在为 Colibri iMX6ULL 模块上的计算机。但是,我的生成失败,它显示以下错误

    declaration of ‘memfd_create’ follows non-static declaration
    |  static int memfd_create(const char *name, unsigned int flags)
    |             ^~~~~~~~~~~~
    | In file included from /usr/include/x86_64-linux-gnu/bits/mman-linux.h:115:0,
    |                  from /usr/include/x86_64-linux-gnu/bits/mman.h:45,
    |                  from /usr/include/x86_64-linux-gnu/sys/mman.h:41,
    |                  from /home/abhiarora/iohertz/gateway_os/yocto/build/tmp-glibc/work/x86_64-linux/qemu-native/2.10.0-r0/qemu-2.10.0/include/sysemu/os-posix.h:29,
    |                  from /home/abhiarora/iohertz/gateway_os/yocto/build/tmp-glibc/work/x86_64-linux/qemu-native/2.10.0-r0/qemu-2.10.0/include/qemu/osdep.h:104,
    |                  from /home/abhiarora/iohertz/gateway_os/yocto/build/tmp-glibc/work/x86_64-linux/qemu-native/2.10.0-r0/qemu-2.10.0/util/memfd.c:28:
    | /usr/include/x86_64-linux-gnu/bits/mman-shared.h:46:5: note: previous declaration of ‘memfd_create’ was here
    |  int memfd_create (const char *__name, unsigned int __flags) __THROW;
    |      ^~~~~~~~~~~~
    | /home/abhiarora/iohertz/gateway_os/yocto/build/tmp-glibc/work/x86_64-linux/qemu-native/2.10.0-r0/qemu-2.10.0/rules.mak:66: recipe for target 'util/memfd.o' failed
    

    这个错误:

    | gcc  -c -I. -I../lib -I../../git/lib -isystem/home/abhiarora/iohertz/gateway_os/yocto/build/tmp-glibc/work/x86_64-linux/e2fsprogs-native/1.43.5-r0/recipe-sysroot-native/usr/include -isystem/home/abhiarora/iohertz/gateway_os/yocto/build/tmp-glibc/work/x86_64-linux/e2fsprogs-native/1.43.5-r0/recipe-sysroot-native/usr/include -O2 -pipe  -DHAVE_CONFIG_H -I../../git/debugfs/../e2fsck -DDEBUGFS ../../git/debugfs/quota.c -o quota.o
    | ../../git/debugfs/../misc/create_inode.c:406:18: error: conflicting types for ‘copy_file_range’
    |  static errcode_t copy_file_range(ext2_filsys fs, int fd, ext2_file_t e2_file,
    |                   ^~~~~~~~~~~~~~~
    | In file included from ../../git/debugfs/../misc/create_inode.c:19:0:
    | /usr/include/unistd.h:1110:9: note: previous declaration of ‘copy_file_range’ was here
    |  ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
    |          ^~~~~~~~~~~~~~~
    | gcc  -c -I. -I../lib -I../../git/lib -isystem/home/abhiarora/iohertz/gateway_os/yocto/build/tmp-glibc/work/x86_64-linux/e2fsprogs-native/1.43.5-r0/recipe-sysroot-native/usr/include -isystem/home/abhiarora/iohertz/gateway_os/yocto/build/tmp-glibc/work/x86_64-linux/e2fsprogs-native/1.43.5-r0/recipe-sysroot-native/usr/include -O2 -pipe  -DHAVE_CONFIG_H -I../../git/debugfs/../e2fsck -DDEBUGFS ../../git/debugfs/xattrs.c -o xattrs.o
    | Makefile:422: recipe for target 'create_inode.o' failed
    | make[2]: *** [create_inode.o] Error 1
    | make[2]: *** Waiting for unfinished jobs....
    

    失败的包/任务:

    1. E2FSprogs_1.43.5版
    2. QEMU2.2.10

    有人能帮我吗?我不能切换到Ubuntu 16.04,但我认为它也应该和我的系统一起工作。

    1 回复  |  直到 7 年前
        1
  •  1
  •   falstaff    7 年前

    这是toradex的一个已知问题,并在路线图上,请参阅问题 #36657 .

    修复已经在上游层,我们已经更新了bsp repo。可以使用LIUMIXAGEV2.7集成分支来尝试这个分支。

    推荐文章