0

大規模なプログラム (gcc や clang など) をコンパイルすると、コンピューターが過熱してシャットダウンを余儀なくされる可能性があります。

make中断したところからプロセスを再開したいと思います。問題は.o、ビルドの残りの部分が壊れる原因となる、半分完成した/書き込まれたファイルが浮かんでいるようです (これは、指定した場合に特に悪いです-j 8)

make cleanこの問題を回避する簡単な方法はありますか(a などを実行せずmake distcleanに)?

GNU Make 3.81 の使用

4

1 に答える 1

1

ベータのコメントと同じ行に沿って、より信頼性が高く混乱の少ない IMO は、一時ファイルにコンパイルするようにコンパイル ルールを変更し、最後にそれを実際のファイルに名前を変更することです。したがって、次のようなものがある場合があります。

%.o : %.c
        $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<

代わりに、次のようなものを使用します。

%.o : %.c
        $(CC) $(CFLAGS) $(CPPFLAGS) -o $@.tmp -c $< \
            && mv -f $@.tmp $@

「rm -f $@」も追加したい場合としない場合があります。

この変更を「プログラムで」行うことができるかどうかは、makefile とその構造によって異なります。整形式のメイクファイルの場合、上記のように、いくつかの暗黙の規則でいくつかの場所でこれらの変更を行うことができます。

于 2013-03-11T12:21:10.067 に答える