0

Windows Vista Ultimate マシンで Firefox をビルドしようとしています。次のエラーが発生し続けます。

nsinstall: ファイル番号が正しくありません

Vista の UAC が原因でこのエラーが発生することを読みました。この結論に至った 2 つの記事を次に示します。https://wiki.mozilla.org/Penelope_Developer_Page#Windows_Vistaおよびhttp://www.kevinbrosnan.net/mozilla-build-error-nsinstall-bad-file-number

標準の「管理者として実行」を使用して、ビルドをやり直そうとしましたが、まったく同じエラーが発生します。また、管理者として通常のコマンド プロンプトを起動し、mozilla-build (start-msvc8.bat) のバッチ ファイルに移動して実行しました。それでも、同じポイントで同じエラー。

このエラーを回避する方法、または他の何かがエラーを引き起こしている可能性があることについて、他の洞察はありますか?

:トピック固有のヘルプを得ることを期待してここにも投稿しましたが、のぞき見は聞いていません... 投稿した後、 に関する情報を見つけましたnsinstall。とにかく、私はSOの方が好きなので、ここで試してみようと思いました...

更新: cnemelkasr で提案されているように、UAC を完全に無効にして問題を修正しようとしました。まったく同じエラーを受け取りました。この新しい知識により、ファイルまたはフォルダーが欠落していると思います... NSInstall の経験がある人は、指定されたエラー (ファイル番号が正しくありません) が何を意味するのか知っていますか? ファイルハンドルを参照している可能性があると思います...

4

3 に答える 3

0

本当に UAC エラーである場合は、UAC を完全にオフにしてみてください。いくつかのパッケージでこれを行う必要がありました。それを行うための指示を得るために、ウェブ上には数多くの場所があります。

http://www.petri.co.il/disable_uac_in_windows_vista.htmはその 1 つです。

于 2009-08-29T21:24:43.143 に答える
0

私は自分の質問に対する答えを見つけました。ここに回答を投稿して、回答を他の人と共有し、この質問を閉じます。

UAC を無効にした後、ディレクトリの深さが NSInstall に干渉していることが示唆されました。フォルダを から に移動しc:/Users/Frank/Documents/hg-repos/firefox-src-hgRepo/mozilla-fv-expirement/ましたC:/mozilla-fv-expirement/。以前のビルド試行をすべて消去し、最後にビルドをやり直して (UAC をオフにして)、動作するデバッグ バイナリを受け取りました。

提案はmozilla.dev.buildsに投稿されました。

于 2009-09-01T14:57:24.340 に答える
0

私が見た場合の「Bad file number」execvp (command, argv)メッセージは、 (または同様の) 関数に渡された引数が多すぎるために発生します。ただし、一部のプログラムからのみ。古いbashsh 、またはPATHにある Borland/Watcom プログラムが候補になる可能性があります。

したがって、ビルド ディレクトリの名前を短くすると、コマンド ライン (最終的に に渡される) の合計サイズCreateProcess()が短くなります。これは Win-XP でも見たことがあるので、UAC はこれとは何の関係もないと思います。しかし、ビルド中に Mozilla が相対パスを使用しないのは少し奇妙です。メイクファイルでディレクトリプレフィックス値を使用していると思います(ビルドしようとしたことはありません)。

のドキュメントを見ると_execvp():
http://msdn.microsoft.com/en-us/library/3xw6zy53.aspx

E2BIGは可能なerrno値の 1 つ
です。引数と環境設定に必要なスペースが 32 KB を超えています。

さて、ここが奇妙な部分です。

事実 1 :
Visual-C/MingW (任意のバージョン) では、「Bad file number」strerror(EBADF)は返されません。( 「不正なファイル記述子」を返します)。

事実 2 :
Borland の CBuilder 5.6 および Watcom 1.9 (これらはMSVC ランタイムを使用 しません) では、実際に"Bad file number"strerror(EBADF)が返されます。

理論:
Borland、Watcom (および他の CRT も?) が と の意味を混同している可能性はE2BIGありEBADFます。それは意味がありましたか?より良い理論があれば、誰かが私を修正してください。私自身、ちょっと迷ってます…

結論:
環境のサイズを短くする (最も簡単) か、コマンドラインを短くする (必ずしも簡単ではありません)。

--gv

于 2012-02-16T08:50:31.087 に答える