クロスコンパイラが機能していることを確認するためにテストしています。hello world をコンパイルすると正常にコンパイルされるように見えますが、hello.cpp を 1000 回ループする同じプログラムに変更すると、生成される elf ファイルはまったく同じサイズになります。どのような変更を加えても、ファイルは常に同じサイズであり、私が知る限り、内容は同じです。これは何が原因でしょうか?
2 に答える
「私が知る限り」とはどういう意味ですか? diffまたは他のユーティリティで確認できます。クロスコンパイラを小さなデバイスに使用している場合、出力を指定されたサイズのブロックに割り当てるか、ターゲットのデバイスサイズを事前に割り当てる必要がある場合があります。実際にまったく同じファイルを取得できることをツールで確認できますか?
詳細がなければ、あなたを大いに助けるのは難しいでしょう。しかし、ここにいくつかのアイデアがあります:
ボビーが言うように、あなたはそれに正しいファイルを渡していると確信していますか?
実行している実行可能ファイルが生成されているものであると確信していますか?
コンパイルは実際に成功していますか?実行している実行可能ファイルは、現在のコンパイルの試みではなく、コンパイラーの最後の正常な実行からのものである可能性があります。
viraptorが提案したように、ファイルが同じであることを絶対に確信していますか?diffはそれらが同じだと言っていますか?行っている変更が最適化されている可能性があります。特に、呼び出されていないコードに変更を加えている場合はそうです。
本当に、オッズはあなたがあなたがしていると思うことを実際にやっていないということです。
コンパイルコマンド(コマンドラインやmakeファイルなど)が正しいことを確認してください。
実行可能ファイルを削除して、新しい実行可能ファイルが実際に生成されていることを確認する必要があります。
特にジャンクを試してコンパイルした場合のコンパイラの動作を確認してください。コンパイルしないでください。もしそうなら、あなたはあなたがコンパイルしていると思うものをコンパイルしていません。