红联Linux门户
Linux帮助

编译不带O2优化的linux内核

发布时间:2016-02-04 09:39:49来源:linux网站作者:diamondsupervisor

今天在Cygwin上编译了一个不带O2优化的linux内核,这样结合QEMU和CDT就很容易进行内核的代码单步跟踪和调试。把对内核的修改记录一下:


1.将内核主目录下的Makefile中所有的-O2删除掉。

sed -i s/-O2//g Makefile


2.在.config 中使能CONFIG_HIGHMEM=y


3.修改 arch/arm/mm/highmem.c 加上如下的dummy函数。
void *kmap_high_l1_vipt(struct page *page, pte_t *saved_pte)
{
}
void kunmap_high_l1_vipt(struct page *page, pte_t saved_pte)
{
}


4.注释文件arch/arm/kernel/Setup.c中的如下行。
//#ifdef MULTI_TLB
struct cpu_tlb_fns cpu_tlb;
//#endif


5.注释mm/slab.c中的如下行。
static __always_inline int index_of(const size_t size)
{
//      extern void __bad_size(void);

//      if (__builtin_constant_p(size)) {
int i = 0;

#define CACHE(x) \
if (size <=x) \
return i; \
else \
i++;
#include <linux/kmalloc_sizes.h>
#undef CACHE
//              __bad_size();
//      } else
//              __bad_size();
return 0;
}


本文永久更新地址:http://www.linuxdiyf.com/linux/17865.html