gcc最適化なしでLinuxカーネルを構築する

gcc最適化なしでLinuxカーネルを構築する

私は、Googleの結果で見つけた多くのチュートリアルの1つに従って、gccとkgdb / gdbを使用してLinuxカーネルを構築してデバッグしました。結局私はそれがすべて時間の無駄だったことに気づいた。 -O0と-Ogはどちらもgcc最適化なしでカーネルをコンパイルできないからです。最適化を削除する構成オプションはありません。最後に、Linusは数年前にこれがデバッグには良くないと言いました。

何らかの理由でkgdbが必ず存在しなければならないという。変数/パラメータを削除する方法があるかどうか疑問に思います。」最適化「ある場所から別の場所にジャンプするのではなく、デバッガにコードを順番に実行させますか?

ベストアンサー1

Linuxカーネルソースツリーに削除する-O2-O0

すべてのコンパイルフラグを変更する方法は次のとおりです(Stephen Kittによると危険です)。

cd linux
find . -name Makefile -print0 | xargs -0 sed -i 's/-O2/-O0/g'
or
find . -name Makefile -print0 | xargs -0 sed -i 's/-O2/-Og/g'

または、単にルートMakefileに変更してください(これはより安全です):

cd linux
sed -i 's/-O2/-O0/g' Makefile
or 
xargs -0 sed -i 's/-O2/-Og/g' Makefile

man gcc-Ogデバッグ目的に役立ちます。

おすすめ記事