2015-03-19 14 views
8

Linux çekirdeğinin Bellek Yönetimi'ni (özellikle defrag \ compaction \ migrasyon) okumak ve anlamak istiyorum.Linux çekirdeğini -O0 ile derlemek ve derlemek nasıl?

.config'da boyut için optimizasyonu devre dışı bırakıyorum (elbette menü menu yapısını kullanarak) ve derledim ... Bu bana hala optimize edilmiş bir çekirdek bırakıyor.

NOT: Ben çekirdek optimize derken, ben gdb kullanmak ve onu next anlatmak zaman etrafında atlamak edeceğiz anlamına gelir. Bunu istemiyorum, basit bir merhaba dünyasında olduğu gibi kod satırını takip edebilirim.

Daha sonra, Makefile dosyasını düzenler ve 'u -O0 ile değiştirir ve bu da işlerin bozulmasına neden olur.

this'u buldum, ancak hangi dosyaların olacağını bilmiyorum çünkü tavşan deliğinin ne kadar aşağı gittiğini bilmiyorum.

Kullanabileceğim daha genel bir seçenek var mı? Bellek sıkıştırma kavramlarını anlıyorum; Ancak, her şeyin nerede olduğunu ve nasıl gerçekleştiğini görmek istiyorum.

+0

@EdHeal: Henüz April Fools Günü değil. Lütfen yorumunuzu yapıcı tutun. –

+0

@BenVoigt - IMHO bu aptalca bir soru ve bu nedenle haklı ve "esprili" yanıt –

+0

@EdHeal teşekkürler ... en azından beni yönlendirebilirsiniz bir adam sayfası var mı? – SailorCire

cevap

4

Çekirdeği optimize edemezsiniz. Bunu, belirli işlevleri de-optimize etmek mümkün olabilir:

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

Ama bir bütün olarak çekirdek gerektirir O2 kod kendisi belli işlevler belirli bir şekilde optimize edileceğini varsayımlarla yazıldığı için.

Üzgünüz, ama aşağı gitmek istediğiniz tavşan deliğinin boyutunu bilmeniz gerekecek.

+1

Optimizasyonu "-O1" yerine "-O0" olarak ayarlayabilir miyiz? – skytree