我很困扰,因为这不应该让我头疼。我已经为MAC OS X 10.7.1 /
下载了最新的Eclipse Indigo和所有 CDT C ++插件在安装上述CDT插件后重新启动时,我开发了一个简单的“hello world”c ++应用程序,并尝试运行该应用程序,“启动失败。未找到二进制文件。”错误信息。我已阅读多个修复程序,但没有一个有效。我尝试将-arch i386标志添加到链接器和编译器命令,但仍然没有运气。
有没有人成功地在10.7.1上运行Eclipse C ++ ??????这让我大吃一惊。我可以简单地在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 ****
答案 0 :(得分:33)
对于那些刚接触编程/ eclipse / IDE并且得到相同错误但上述解决方案不起作用的人,我解决了我的“启动失败。未找到二进制文件”。执行以下操作时出错:在尝试运行或调试之前,只需确保构建项目(“Project”>“Build All”)。当我点击调试或运行时,我认为IDE会进行构建,但事实并非如此(显然,回想起来)。新手的经验教训。构建完成后,您应该在项目的根目录下看到“Binaries”和“Debug”文件夹。
我使用OS X 10.7.3,如果它很重要,虽然我认为我犯的错误是基本的,任何eclipse发行版都会给出同样的错误。
答案 1 :(得分:31)
我在运行Snow Leopard的2007 Macbook上使用Eclipse Juno和CDT。我有两个症状:
我花了好几个小时在Google上寻找答案,足够长的时间来确定这两个症状是否表明在没有足够分辨率的情况下已经报告了不到十年的任何问题。这是一个问题,因为十年后应该有足够的输入数据来提供一个故障排除程序,逐步引导用户消除所有可能的原因。
相反,几个小时以来,我读到了很多人,其中许多人已经解决了他们的特殊问题,但他们似乎都不得不做一些与此不同的事情。
这应该不难解决。特别是在像我这样的情况下[但我不是唯一一个]当Console视图显示没有错误的Build时,用户可以将二进制文件[Eclipse奇怪地说它无法找到]复制到桌面并运行它来自Finder或bash终端会话的任何问题。
所有这些似乎都强调指向 Mach0 64二进制解析器中缺少适当的指标,这应该被设计为告诉我们完全它需要什么,它没有看到强>
不可否认,就像我的MacBooks在64位CPU上运行64位操作系统[Snow Leopard]的情况一样,这种情况更加恶化,不幸的是,制造商使用32位启动内核。但是,预先警告,我已经尝试过-arch i386 g ++开关,并且将g ++重新连接到g ++ - 4.0而没有任何症状变化。
ADDENDUM ADDED 10/07/2012:
我正在添加这份清单,希望能为未来几年提出这个问题的许多其他人提供一条道路。这种方式反映了我在使用Eclipse Juno和运行Snow Leopard的Mac时所发现的必要条件:
1)转到首选项 - > C / C ++ - >新CDT项目向导,在首选工具链下,确保所有可执行项目类型都设置为MacOSX GCC。
2)这是一个很大的问题。我能够在Project Explorer中获得一个Binaries文件夹,因此能够在构建之后运行项目,方法是使用不包含点['。']的项目名称。这是我从另一个答案中学到的,在我之前的消息后几个小时编辑。这个要求很容易被忽略,因此这是一个常见的要求,特别是如果你是Eclipse经验但只有其他语言,因为其他语言插件的教程[例如使用PyDev或Java]经常让你在名称中创建带点的项目。如果你已经习惯了其他语言,那么在使用CDT for C / C ++时就要打破它。但是,要预先警告,仅使用右键单击并重命名现有项目名称是不够的,这次不使用点。最简单的方法是删除旧项目并创建一个没有点名称的新项目。
3)有许多网站提醒您确保使用-arch i386编译器开关或更改/ usr / bin / gcc和/ usr / bin / g ++的链接以指向gcc-4.0和g ++ - 4.0而不是gcc-4.2和g ++ - 4.2。我创建了一个bash脚本来轻松来回切换并调查是否有必要。它不是,至少不是我的Macbook。基于我在Mach-O开发人员的一个站点上读到的内容,我怀疑当前版本的Mach-0 64是双向的。这对...来说是个好消息。
4)在Project Properties中,不是Preferences,转到C / C ++ Build-> Settings并在Binary Parsers下确保选中Mach-O 64 Parser。确保选中此项,而不是已弃用的Mach-O解析器。
5)此时,在构建项目之后,项目浏览器中应该有一些明显的事情:
6)项目文件夹下现在应该有一个Binaries文件夹。
7)在该Binaries文件夹中,现在应该是您的可执行文件。它旁边应该有[x86_64 / le],如果像我一样,你的Mac实际上是32位。现在不是进入令人困惑的主题的最佳时机,无论你的Mac是32位还是64位。如果您不知道,并且很多人不这样做,因为Apple确实让它变得混乱,请查看可以从http://www.ahatfullofsky.comuv.com/English/Programs/SMS/SMS.html下载的小应用程序,它将告诉您什么是真相。它是免费的,但“价格”是你必须滚动浏览页面顶部的广告,反映程序员的政治倾向。
答案 2 :(得分:10)
在mac上:
确保已安装xcode。通过编写“info g ++”来测试它,你必须看到有关编译器的正确信息。
构建您的项目。
转到项目的文件夹。您应该在Debug或realize文件夹中看到一个可执行文件,具体取决于您的构建配置。如果你点击可执行文件,你应该在终端上看到结果。
返回Ecliipse,从运行/运行配置...然后浏览到您拥有可执行文件的文件夹 - 您已找到的文件夹 - 您还可以在该窗口中更改构建配置。并为每次运行自动构建。
再次运行它应该工作。
答案 3 :(得分:7)
我遇到了同样的问题,然后我在this site找到了解决方案。 让我解释一下;
答案 4 :(得分:4)
您应该更改项目的设置以构建可执行文件而不是动态库:
Invoking: MacOS X C++ Linker g++ -arch i386 -dynamiclib -o "libHelloWorld" ./main.o`
转到项目属性 - > C / C ++ Build - >设置 - >构建工件,并在第一个下拉列表中选择可执行文件。
答案 5 :(得分:2)
我遇到了同样的问题。答案很难找到,因为“二元未找到”问题之前曾多次出现过,有不同的原因和解决方案(选择64位解析器等)。
事实证明,在我的情况下,修复很简单:您必须为您创建的每个新项目进行一次手动构建。之后,像往常一样工作。
详细信息:在Mac OS 10.7.2上使用全新安装的Eclipse Indigo Service Release 1。
答案 6 :(得分:2)
如果您的项目名称包含“。” (点),不会在建筑项目上生成二进制文件。 从项目名称中删除所有“。”(点)并重建它或尝试创建一个新项目。
快乐的编码!
答案 7 :(得分:2)
答案 8 :(得分:2)
我正在使用Eclipse Oxygen,以下解决了我的问题:
右键点击您的项目,然后转到属性。导航到 C / C ++ Build>工具链编辑器并在当前工具链中选择 MacOSX GCC ,然后选择应用并关闭。
使用 CMD + B 构建项目,然后运行它。
答案 9 :(得分:1)
我通过创建“启动配置”解决了Eclipse的类似问题。我在OSX Lion上使用Eclipse的Indigo版本和CDT(C / C ++ dev环境)。我找到了在Project-> Properties-> Run / Debug Settings中创建新启动配置的选项。
创建并构建一个空的“Hello World Ansi C Autotools项目”后,我遇到了这个问题。构建过程创建了一个工作可执行文件src / a.out。我可以从终端成功运行a.out但是Eclipse在我创建指向它的启动配置之前不明白这是我的项目的可执行文件。一旦我这样做,我就可以像往常一样使用绿色运行按钮运行a.out。
答案 10 :(得分:0)
即使我将工件设置为可执行文件,我也遇到了同样的问题。这是因为勾选了共享库设置,即使您指定了可执行文件,也会导致生成dylib。
答案 11 :(得分:0)
我通过在项目属性对话框中的 C / C ++ Build 标签上将构建器类型设置为内部构建器来运行此操作
答案 12 :(得分:0)
无论在您的工作区中采用哪种方法来解决此问题,这个问题似乎已成为我创建的项目的原生。既不使用参数也不确保用于链接的gcc版本不起作用。我找到了一个直观的解决方案。这是:“...二进制不可用...”错误。 请执行以下操作:(请记住以下步骤是在您采取上述任一路线之后,并且没有一个解决了这个问题。
1。)删除所有内容 - 项目和文件。 2.)创建新项目和源文件
答案 13 :(得分:0)
我有类似的问题,但代码不同。在File.h文件中确保
virtual ~Destructor () {}; //Don't forget Curly braces {}
上面的语句显示析构函数initialized()并使用花括号{}定义。在我的代码中,我忘了定义析构函数。 希望这有帮助
答案 14 :(得分:0)
我遇到了同样的问题,所以我在一个小小的位置摆弄,发现如果我点击"个人资料"按钮(绿色播放图标,下面有一个小时钟),右边的"运行"按钮,我的程序将在下次单击“运行”按钮时运行。
我实际上不知道那是做了什么,但它允许我运行代码。
如果有人知道为什么这会有所帮助,以及它是否是一个真正的解决方案,请不要犹豫再来!