OS X Eclipse C++ の起動に失敗しました - バイナリが見つかりません 質問する

OS X Eclipse C++ の起動に失敗しました - バイナリが見つかりません 質問する

こんなに頭を悩ませるはずはないので、とても困っています。最新のEclipse Indigoをダウンロードし、全てMAC OS X 10.7.1 用 CDT C++ プラグイン/

上記の CDT プラグインをインストールした後、再起動すると、単純な「hello world」C++ アプリケーションを開発し、アプリケーションを実行しようとしましたが、「起動に失敗しました。バイナリが見つかりません。」というエラー メッセージが表示されます。複数の修正方法を読みましたが、どれも機能しませんでした。リンカー コマンドとコンパイラ コマンドに -arch i386 フラグを追加してみましたが、それでもうまくいきませんでした。

誰か Eclipse C++ を 10.7.1 で正常に実行できた人はいますか? 驚きです。同じプログラムを VIM で記述し、ターミナル経由で問題なくコンパイルして実行できます。ECLIPSE は協力してくれません。

助けてくれる方には心から感謝します!!!!!

編集:コンパイラ出力

**** Build of configuration Debug for project HelloWorld ****
make all Building file: ../main.cpp
Invoking: GCC C++ Compiler g++ -I/Developer/SDKs/MacOSX10.6.sdk/usr/include -O0 -g3 -Wall -c -fmessage-length=0 -arch i386 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.cpp"
Finished building: ../main.cpp
Building target: libHelloWorld
Invoking: MacOS X C++ Linker g++ -arch i386 -dynamiclib -o "libHelloWorld" ./main.o
Finished building target: libHelloWorld
**** Build Finished ****

ベストアンサー1

私は、Snow Leopard が稼働する 2007 Macbook で CDT 付きの Eclipse Juno を使用しています。次の 2 つの症状があります:

  1. プロジェクトエクスプローラーにバイナリフォルダが存在せず、
  2. 「起動に失敗しました。バイナリが見つかりません」というエラー。

私は答えを求めて Google で何時間も検索し、この 2 つの症状が、10 年近くにわたって適切な解決策がないまま報告されてきた数多くの問題を示していることを突き止めました。これはまさに問題です。10 年も経てば、考えられるすべての原因を排除してユーザーを段階的に導くトラブルシューティング手順をどこかに 1 つ提供できるだけの入力データが十分にあるはずです。

その代わりに、私は何時間もかけて、多くの人々について読みました。彼らの多くは特定の問題を解決しましたが、全員がそこに到達するために少しだけ異なることをしなければならなかったようです。

これは、解決するのがそれほど難しいことではありません。特に、私のようなケース(ただし、私だけではありません)では、コンソール ビューにエラーのないビルドが表示されても、ユーザーはバイナリ ファイル(Eclipse では奇妙なことに見つからないと表示されます)をデスクトップにコピーし、Finder または bash ターミナル セッションから問題なく実行できます。

これらすべては、むしろ次のことを示唆しているようだ。Mach0 64バイナリパーサーには、次のことを伝えるために設計されるべき適切なインジケータが欠けている。その通り必要なものが見えていない

確かに、私の MacBook のように、64 ビット CPU 上で 64 ビット OS [Snow Leopard] を実行している場合、これはさらに悪化します。残念ながら、メーカーは 32 ビットのブートアップ カーネルでこの CPU を制限しています。ただし、警告しておきますが、私はすでに -arch i386 g++ スイッチと、g++ を g++-4.0 に再リンクしてみましたが、症状に変化はありませんでした。

2012 年 10 月 7 日追加補遺:

今後、間違いなくこの質問をするであろう多くの人々のために、方法を明確にすることを願って、このチェックリストを追加しています。この方法は、Snow Leopard を実行している Mac で Eclipse Juno を使用するときに必要だと私が見つけたものを反映しています。

1) 「環境設定」->「C/C++」->「新規 CDT プロジェクト ウィザード」に移動し、「優先ツールチェーン」で、すべての実行可能プロジェクト タイプが MacOSX GCC に設定されていることを確認します。

2) これは大きな問題です。ドット ['.'] を含まないプロジェクト名を使用することで、プロジェクト エクスプローラーでバイナリ フォルダーを取得し、ビルド後にプロジェクトを実行できるようになりました。これは、前のメッセージの数時間後に編集された別の回答から学びました。この要件は見落とされやすいため、特に Eclipse の経験はあるが他の言語しか知らない場合は一般的です。他の言語プラグイン (PyDev や Java など) のチュートリアルでは、名前にドットを含むプロジェクトを作成することが多いためです。他の言語でその習慣を身に付けている場合は、C/C++ に CDT を使用するときにそれを破ってください。ただし、右クリックして既存のプロジェクト名をドットなしで変更するだけでは十分ではないことに注意してください。最も簡単な方法は、古いプロジェクトを削除し、ドットを含まない名前で新しいプロジェクトを作成することです。

3) 多くの Web サイトでは、-arch i386 コンパイラ スイッチを使用するか、/usr/bin/gcc と /usr/bin/g++ のリンクを gcc-4.2 と g++-4.2 ではなく gcc-4.0 と g++-4.0 に変更するように注意を促しています。私は、切り替えを容易にする bash スクリプトを作成し、これが必要かどうかを調べました。少なくとも私の Macbook では必要ありませんでした。あるサイトで Mach-O 開発者から読んだ内容に基づくと、現在のバージョンの Mach-0 64 は両方向であると思われます。これは、次の話題への良いきっかけになります...

4) プロジェクト プロパティ (設定ではありません) で、C/C++ ビルド -> 設定に移動し、バイナリ パーサーの下で Mach-O 64 パーサーがチェックされていることを確認します。非推奨の Mach-O パーサーではなく、これがチェックされていることを確認してください。

5) この時点で、プロジェクトをビルドすると、プロジェクト エクスプローラーにいくつかのことが表示されます。

6) プロジェクトのフォルダーの下に Binaries フォルダーが作成されます。

7) そのバイナリフォルダの中に実行ファイルがあるはずです。私のように、あなたのMacが実質的に32ビットであれば、その横に[x86_64/le]と表示されているはずです。今は、あなたのMacが実質的に32ビットか64ビットかという紛らわしい話題に立ち入るのは良いタイミングではありません。もしあなたが知らないなら、そしてAppleがそれを紛らわしくしているので、多くの人が知らないのであれば、ここからダウンロードできる小さなアプリをチェックしてください。http://www.ahatfullofsky.comuv.com/English/Programs/SMS/SMS.html真実とは何かを教えてくれます。無料ですが、その代償として、プログラマーの政治的な傾向を反映したページ上部の広告をスクロールして読み飛ばさなければなりません。

おすすめ記事