How to de-optimize the Linux kernel to and compile it with -O0?

别等时光非礼了梦想. 提交于 2019-11-27 03:20:46

问题


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:


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.



来源:https://stackoverflow.com/questions/29151235/how-to-de-optimize-the-linux-kernel-to-and-compile-it-with-o0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!