これはすべて、依存関係が Makefile でどれだけうまくレイアウトされているかにかかっています。行の順序や偶然の一致だけに依存するのではなく、すべての依存関係を指定することに細心の注意を払う必要があります。
の出力が正常に機能したのに機能しなかったという状況がありました。これはmake -j2
、make -j4
1 つの項目がコンパイルされる前にコンパイルされていたためでしたが、それを指定する際に十分に注意していませんでした。同様に、私はmake -j4
動作しているように見えましたが、特定の部分が古いコードでコンパイルされていることがわかりました。つまり、最終製品は予想とは異なるものになるでしょう. make clean
自由に安全に使用できるようにする依存関係の問題を見つける前に、ビルドの前に確認する必要がありましmake -j4
た。
それぞれの質問にお答えします。
- make に複数のジョブを処理するように依頼するのが安全な場合についての簡単なガイドラインはありますか?
私の本にはありません。依存関係が完全に正しい場合は、問題ありません。それ以外の場合は、注意してください。
- make で複数のジョブを使用できるかどうかを事前に判断する方法はありますか?
答えは前の項目と同じだと思います。私は通常、うまくいかないことがわかるまでうまくいくと思い込んでから、問題を見つけようとします。ただし、これは安全な作業方法ではない可能性があります。予期しない結果が発生した場合は、複数のジョブを使用せずにmake clean
and thenを使用して、問題が解決するかどうかを確認してください。make
そうであれば、Makefile の依存関係が正しくないと合理的に推測できます。
また、この問題に関する暗黙の質問もあります.so file format not recognized
。それは同じ問題のように聞こえます。具体的には、.so が間違った依存関係でビルドされているか、正しいものが見つかるかビルドされる前に間違った .so が取り込まれているか、.so が呼び出されたときに不完全な状態である可能性があります。