Linux内核构建编译错误字符串溢出和指针访问大小



我尝试构建Linux内核,但遇到了一些编译错误。有人知道我做错了什么吗?我该怎么解决?(或者,您还需要什么其他信息?(

构建系统正在运行最新的Fedora:4.19.6-300.fc29.x86_64#1 SMP 12月2日星期日17:33:14 UTC 2018 x86_64 x86_66 x86_6 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(({^~~~~~~

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((;

^

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

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

为此,请使用预构建的编译器,将其安装到/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

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

相关内容

  • 没有找到相关文章

最新更新