我尝试过构建Linux内核,并遇到了一些编译错误。有人知道我做错了什么吗?我怎样才能解决这个问题?(或者,您还需要哪些其他信息?)
构建系统正在运行最近的Fedora: 4.19.6-300.fc29.x86_64 #1 SMP Sun Dec 2 17:33:14 UTC 2018 x86_64 GNU/Linux
目标系统是Radxa岩石Pi 4
导出ARCH=arm64 导出交叉编译=aarch64-linux-gnu-
请参阅https://forum.radxa.com/t/building-debian-image-on-gcc8-systems/128/4
是的,Radxa有一个论坛,我已经在那里交叉张贴,但我认为Stack area在这方面有更广泛的经验。
编译错误如下:
arch/arm64/内核/vdso.c:函数‘vdso_init’:arch/arm64/ size /vdso.c:119:6:警告:“memcmp”从大小为1的区域读取4个字节-Wstringop溢出= warning:vdso.c:119,如果(memcmp(&vdso_start,"\177ELF",4)) {{ make1:**脚本/Makefile.build:277:arch/arm64/内核/vdso.o错误1
和
fs/exec.c:函数‘get_task_comm’:fs/exec.c:1084:32:警告:在‘strncpy’调用中对‘size’的参数与源表达式相同;您是想使用目标的大小吗?--指针-memaccess错误,禁止的warning:exec.c:1084 strncpy(buf,tsk>comm,tsk>comm);
^
发布于 2018-12-09 13:55:22
Radxa提供了答案,即将gcc-aarch64-linux-gnu
降级为version 7,就像在Fedora的上一版中所发现的那样。
发布于 2020-12-23 05:17:56
解决此问题的最佳方法是使用与您要编译的内核的年龄相匹配的编译器。
为此,使用预构建的编译器,将其安装到/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
否则,要具体修复您的bug,请更改以下内容(在arch/arm64/ your /vdso.c中):
extern char vdso_start, vdso_end;
对此:
extern char vdso_start[], vdso_end[];
也可以更改所有对
&vdso_start
到以下
vdso_start
然而,不幸的是,这只能解决大量bug中的第一个问题。
https://stackoverflow.com/questions/53692404
复制相似问题