How to de-optimize the Linux kernel to and compile

2019-01-18 23:22发布

I'm wanting to read and understand the Linux kernel's Memory Management (in particular defrag\compaction\migration).

So, I turn off optimization for size in .config (using make menuconfig of course) and compile...This leaves me with still an optimized kernel.

NOTE: When I say optimized kernel, I mean that when I use gdb and tell it next that it'll jump around. I don't want that, I want to be able to follow the code line by line just as I would with a simple hello world.

Next, I edit the Makefile and swap -O2 with -O0 and that causes things to break.

I found this, but I don't know what files I'll want because I don't know how far down the rabbit hole goes.

Is there a more generic option that I can use? I understand the concepts of memory compaction; however, I want to see where everything happens and how it exactly happens.

1条回答
男人必须洒脱
2楼-- · 2019-01-19 00:19

You can't de-optimize the kernel. You might be able to de-optimize certain functions, like this:

void __attribute__((optimize("O0"))) foo(unsigned char data) {
    // unmodifiable compiler code
}

But the kernel as a whole requires -O2 because the code itself is written with assumptions that certain functions will be optimized in a certain way.

Sorry, but you really will need to know the size of the rabbit hole you want to go down.

查看更多
登录 后发表回答