【问题标题】:Linux kernel build compile errors stringop-overflow and sizeof-pointer-memaccessLinux 内核构建编译错误 stringop-overflow 和 sizeof-pointer-memaccess
【发布时间】:2019-05-10 13:41:08
【问题描述】:

我尝试构建 Linux 内核,但遇到了一些编译错误。有谁知道我做错了什么以及如何解决? (或者,您还需要哪些额外信息?)

构建系统正在运行最新的 Fedora:4.19.6-300.fc29.x86_64 #1 SMP Sun Dec 2 17:33:14 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

目标系统是 Radxa Rock Pi 4

导出 ARCH=arm64

export CROSS_COMPILE=aarch64-linux-gnu-

参考https://forum.radxa.com/t/building-debian-image-on-gcc8-systems/128/4

是的,Radxa 有一个论坛,我在那里交叉发帖,但我认为 Stack Overflow 在这方面有更广泛的经验。

编译错误如下:

arch/arm64/kernel/vdso.c:在函数“vdso_init”中: arch/arm64/kernel/vdso.c:119:6:警告:'memcmp' 读取 4 个字节 大小为 1 的区域 [-Wstringop-overflow=] 错误,禁止 警告:vdso.c:119 if (memcmp(&vdso_start, "\177ELF", 4)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ make[1]: *** [scripts/Makefile.build:277: arch/arm64/kernel/vdso.o] 错误 1

fs/exec.c:在函数“get_task_comm”中:fs/exec.c:1084:32:警告: “strncpy”调用中“sizeof”的参数与 资源;你的意思是使用目的地的大小吗? [-Wsizeof-pointer-memaccess] 错误,禁止警告:exec.c:1084
strncpy(buf, tsk->comm, sizeof(tsk->comm));

                            ^

【问题讨论】:

    标签: linux linux-kernel


    【解决方案1】:

    Radxa 提供了答案,将 gcc-aarch64-linux-gnu 降级到 Fedora 之前版本中的版本 7。

    【讨论】:

      【解决方案2】:

      解决此问题的最佳方法是使用与您尝试编译的内核年龄相匹配的编译器。

      为此,请使用预构建的编译器,将其安装到 /usr/local 并将其定义为 CROSS_COMPILE 变量:

      wget https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
      sudo tar xvf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz  -C /usr/local/
      export CROSS_COMPILE=/usr/local/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
      

      现在你可以像这样制作你的内核了:

      export ARCH=arm64
      make
      

      否则,要专门修复您的错误,请更改以下内容(在 arch/arm64/kernel/vdso.c 中):

      extern char vdso_start, vdso_end;
      

      到这里:

      extern char vdso_start[], vdso_end[];
      

      同时将所有引用更改为

      &vdso_start
      

      到下面

      vdso_start
      

      但是,不幸的是,这只能解决大量错误中的第一个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-19
        • 1970-01-01
        • 2020-11-14
        • 2018-09-14
        • 2017-06-06
        • 1970-01-01
        • 1970-01-01
        • 2017-10-01
        相关资源
        最近更新 更多