300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > linux arm内核栈切换 linux-kernel

linux arm内核栈切换 linux-kernel

时间:2021-11-22 18:29:47

相关推荐

linux arm内核栈切换 linux-kernel

我的问题听起来很愚蠢,但这是我过去两天面临的一个简单问题。 撰写本文时,最新的内核版本为4.14,但我想编译任何随机选择的旧版本(v3.2)。

我已经从主线仓库中克隆了内核,并签出了正确的版本

git checkout -b v3.2 v3.2

export ARCH=arm

export CROSS_COMPILE=arm-linux-gnueabi-

make vexpress_defconfig

make -j8 all

这引发了我的错误:

CC arch/arm/vfp/vfpsingle.o

LD usr/built-in.o

CC arch/arm/kernel/elf.o

CC arch/arm/vfp/vfpdouble.o

CC arch/arm/mm/dma-mapping.o

AS arch/arm/kernel/entry-armv.o

AS arch/arm/kernel/entry-common.o

CC arch/arm/kernel/irq.o

CC arch/arm/kernel/process.o

CC arch/arm/kernel/ptrace.o

CC arch/arm/common/gic.o

LD init/mounts.o

init/do_mounts_initrd.o: In function `return_address':

/home/naveen/data/linux/arch/arm/include/asm/ftrace.h:51: multiple definition of `return_address'

init/do_mounts.o:/home/naveen/data/linux/arch/arm/include/asm/ftrace.h:51: first defined here

scripts/Makefile.build:427: recipe for target 'init/mounts.o' failed

make[1]: *** [init/mounts.o] Error 1

Makefile:945: recipe for target 'init' failed

make: *** [init] Error 2

make: *** Waiting for unfinished jobs....

CC arch/arm/common/icst.o

CC arch/arm/mm/extable.o

CC arch/arm/common/timer-sp.o

CC arch/arm/kernel/return_address.o

CC arch/arm/mm/fault.o

CC arch/arm/mm/init.o

CC arch/arm/mm/iomap.o

CC arch/arm/kernel/setup.o

LD arch/arm/common/built-in.o

arch/arm/kernel/return_address.c:62:2: warning: #warning "TODO: return_address should use unwind tables" [-Wcpp]

#warning "TODO: return_address should use unwind tables"

^

arch/arm/kernel/return_address.c:65:7: error: redefinition of ‘return_address’

void *return_address(unsigned int level)

^

In file included from include/linux/ftrace.h:19:0,

from arch/arm/kernel/return_address.c:12:

/home/naveen/data/linux/arch/arm/include/asm/ftrace.h:48:21: note: previous definition of ‘return_address’ was here

extern inline void *return_address(unsigned int level)

^

scripts/Makefile.build:305: recipe for target 'arch/arm/kernel/return_address.o' failed

make[1]: *** [arch/arm/kernel/return_address.o] Error 1

make[1]: *** Waiting for unfinished jobs....

我所有的步骤都应该从本文开始执行 ,而应该一直在进行。 我所能弄清的(在参考了其他类似的文章和关于SO的问题之后)所使用的编译器版本确实很重要。

我当前的编译器版本是:

insanecoder@worstation ~/data/linux $ arm-linux-gnueabi-gcc --version

arm-linux-gnueabi-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) 5.4.0 0609

我的问题是:在编译linux内核时,我是否应该真正注意编译器的版本(工具链)? 如果是,我怎么知道最适合我特定内核版本的工具链/编译器版本。

我的观点是,任何最新的工具链都应处理所有以前的内核版本。 如果缺少旧的编译器,则可能由于缺少编译器选项而无法编译较新的内核版本。 但是,反之亦然不成问题。

编辑

这个问题的实质是为任何主流Linux内核版本找到可靠的信息源,在这里可以找到有关受支持的编译器版本的信息以便对其进行编译。

目的不是编译特定版本的内核。 例如,我非常能够使用现有设置来编译v4.9。 我只是随机选择了一个较旧的版本以验证我的学习。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。