0

unix カーネルのコンパイルに関して問題があります。プロセスのスケジューリングアルゴリズムを設計しています。fork.c 、sched.c の内容を変更しました。ただし、カーネルのコンパイル後に fork.c が更新されている間、sched.c は変更されません。この種の問題について Web で検索しましたが、解決策が見つかりませんでした。このテーマについてアイデアをお持ちの方がいらっしゃれば、とても嬉しく思います。

ありがとうございました !

4

1 に答える 1

0

makeカーネルの構築に次を使用すると仮定します。

make依存関係のタイムスタンプが既存のターゲット ファイルよりも古い場合、ターゲットの作成をスキップすることがあります。

一部のソース ファイルを編集makeし、それを新しいオブジェクト ファイルに再コンパイルしない場合は、ホストのクロックを確認し、将来のタイムスタンプを持つ可能性のあるファイルを削除するためにクリーンにする必要があります。

あなたの場合、sched.cカーネルのコンパイル中に変更されることを期待していますよね? 通常、ソースは変更されておらず、オブジェクト ファイルが変更されているため、これは非常にまれです。多分それは、必要なアクションを妨げるいくつかの奇妙な循環依存を引き起こします:

sched.c : sched.c
        command_to_edit -i sched.c -o sched.c

ターゲットのタイムスタンプ ( ) が依存関係のタイムスタンプ ( ) と同じであるため、makeビルドしない可能性があります。sched.csched.csched.c

于 2013-01-03T15:03:43.947 に答える