1

TLDR: gcc のクロスネイティブ ビルドで致命的なエラー 'failed to get process times' を取得しています。report_times コードを gcc.c から削除するか、gcc コマンド ライン オプションを使用して report_times を無効にするか、libiberty なしで gcc をビルドできますか (report_times で使用される pex_get_times が含まれます)

詳細 さまざまな問題に頭を悩ませた後、(ついに) Android NDK スタンドアロン ツールチェーンを使用して binutils 2.23 と gcc 4.70 をビルドすることに成功しました。

私の現在の問題は、それを自分のデバイスで実行することです。

デバイスで gcc をテストするために、標準の「hello world」(ここからコピー) を作成しました。私が実行すると:

arm-linux-eabi-gcc hello.c -o hello または: arm-linux-eabi-gcc hello.c

次のエラーが表示されます。

arm-linux-eabi-gcc: 致命的なエラー: 処理時間を取得できませんでした: そのようなファイルまたはディレクトリはありません。

Google は、gcc.c ソースへのリンクを除いて、多くを返しませんでした。ソースを調べると、report_times という関数 (モジュール? 拡張子?) にエラーが見つかりました。エラーは、関数 (モジュール? 拡張子?) pex_get_times によって返されます....処理時間を取得できない場合は、エラーが返されると思います。

pex_get_times 関数 (モジュール? 拡張? よくわかりません) は libiberty で定義されています。--disable-build-libiberty を使用できますが、ホスト (私の NookHD) gcc ビルドには役に立ちません。

私の質問:

  1. gcc.c のこの部分を安全に (そして簡単に) 削除することはできますか? また
  2. arm-linux-eabi-gcc に report_times を使用しないように指示するコマンド ライン オプションはありますか? また
  3. gcc と binutils の両方でホスト/ターゲットの libiberty のビルドを無効にする方法はありますか?それによってエラーが修正されますか?

いつものように…答えを待ちながら研究を続けます。

4

1 に答える 1

0

この質問を投稿してから約1時間後にこれを見つけました。たぶん2つ。

どうやら report_times は GCC のデバッグ シンボル (?) の一部です。report_times を除外するには (元の質問から「処理時間の取得に失敗しました」が発生します)、非デバッグ版またはリリース版の gcc をビルドする必要があります。

これを行うために、次のリンクの情報を使用しました: http://www-gpsg.mit.edu/~simon/gcc_g77_install/build.html

しかし、LIBCXXFLAGS と LIBCFLAGS から -g を省略し、念のため -g なしで LIBCPPFLAGS を追加しました。make DESTDIR=/staging/install/path install-host を実行し、tarball してデバイスに転送しました。「処理時間を取得できませんでした」というエラーはもうありません。

別のエラーが表示されますが、この質問とは関係ありません

于 2013-10-13T20:55:37.657 に答える