linux内核编译优化,弱弱的问:如何用-O0优化级别编译Linux内核?

在尝试使用-O0禁用编译优化以调试Linux内核源码时,遇到了编译错误,涉及到未定义的引用如`ntohl`和`cpu_tlb`。其他优化级别如-O1、-O2、-Os都可以成功编译,但-O0不行。讨论中建议检查Makefile中的优化级别设置,并尝试不加任何优化参数或者先执行`make clean`。
摘要由CSDN通过智能技术生成

我想调试嵌入式Linux内核源码,版本为montavista pro 4.0.1,目标平台为TI的DM355,主机是Fedora12,编译器arm_v5t_le-gcc。

现在我通过 OpenJTAG + OpenOCD0.4.0 + arm_v5t_le-gdb + Emacs 已经可以单步调试zImage解压代码,以及内核源代码(虽然还有一些问题,不过也算能源码级调试了)。

我发现内核代码执行顺序与源码不太一致,根据经验,应该是编译器优化的结果,于是我想关闭优化编译Linux内核,在内核源代码顶层目录Makefile中发现优化级别是在525行开始的几行代码中设置的:

ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE

CFLAGS    += -Os

else

CFLAGS    += -O2

endif

于是我将上面的 -Os 与 -O2 都改成 -O0 来禁止编译器优化,接着重新编译内核,出现如下错误:

[hugeice@rdserver ti-davinci]$ make ARCH=arm CROSS_COMPILE=arm_v5t_le- uImage

CHK    include/linux/version.h

SPLIT  include/linux/autoconf.h -> include/config/*

SYMLINK include/asm-arm/arch -> include/asm-arm/arch-davinci

make[1]: `arch/arm/kernel/asm-offsets.s' is up to date

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值