パイプを介して gcc から出力を取得しようとしていますが、上記のエラーがスローされます。コマンドラインはgcc -pipe -c -o - -xc -
. コードは STDIN を介して入力されます。どうやら、BFD ライブラリにはシーク可能な記述子が必要です。この制限を回避する方法はありますか?
質問する
463 次
1 に答える
1
オブジェクトファイルには、さまざまなヘッダーのバイナリオフセットへの相互参照が多数含まれています。コンパイラーは、オブジェクトファイルのさまざまなセクションがどれだけ大きくなるかを書き出すまでわからないため、元に戻す必要があります。実際のマシン コードの記述が完了したら、これらの参照を入力します。そのため、ほとんどのコンパイラは、オブジェクト ファイルがシーク可能であることを要求します。そうでない場合は、すべてのコンパイルが完了するまで、ファイル全体をメモリにバッファリングしておく必要があります。
回避策は、単に一時ファイルにコンパイルしてから、cat
このファイルを使用しようとしているパイプラインの残りの部分に入れることです。
于 2012-10-21T11:19:59.737 に答える