【发布时间】:2010-12-12 17:04:48
【问题描述】:
不是问题,我刚刚在互联网上搜索了该问题的解决方案,并认为我会与 SO 的好人分享。我会用简单的术语来说明它,以便新手可以使用它。 :)(抱歉,如果这是错误的地方 - 只是想提供帮助。)
几乎所有尝试使用 Eclipse C/C++ IDE 的 OS X Snow Leopard 用户都会出现此问题,但对于在 Leopard 中使用 Eclipse C/C++ IDE 的人(如我)来说尤其烦人,并且升级后无法再使用 Eclipse。当用户去构建/编译/链接他们的软件时,就会出现这个问题。他们收到以下错误:
启动失败。找不到二进制文件。
此外,左侧项目窗口中的“二进制”分支根本不存在。
问题:Snow Leopard 附带的 GCC 4.2(GNU 编译器集合)默认编译 64 位二进制文件。不幸的是,Eclipse 使用的链接器不理解 64 位二进制文件。它读取 32 位二进制文件。这里可能还有其他问题,但简而言之,它们最终导致没有生成二进制文件,至少不是 Eclipse 可以读取的,这意味着 Eclipse 找不到二进制文件。因此出现错误。
一种解决方案是在制作文件时添加 -arch i686 标志,但每次手动制作文件很烦人。幸运的是,Snow Leopard 还附带 GCC 4.0,默认编译为 32 位。因此,一种解决方案只是将其链接为默认编译器。我就是这样做的。
解决方案:GCC 位于 /usr/bin 中,这通常是一个隐藏文件夹,因此您无法在 Finder 中看到它,除非您明确告诉系统您想查看隐藏文件夹。无论如何,您要做的是转到 /usr/bin 文件夹并删除将 GCC 命令与 GCC 4.2 链接的路径,并添加将 GCC 命令与 GCC 4.0 链接的路径。换句话说,当您或 Eclipse 尝试访问 GCC 时,我们希望命令转到默认构建为 32 位的编译器,以便链接器可以读取文件;我们不希望它进入以 64 位编译的编译器。
最好的方法是转到应用程序/实用程序,然后选择名为终端的应用程序。应该出现一个文本提示。它应该说类似“(计算机名):〜(用户名)$”(最后有一个空格供用户输入)。完成上述任务的方法是输入以下命令,按顺序逐字输入每个命令,并在每一行后按回车键。
cd /usr/bin
rm cc gcc c++ g++
ln -s gcc-4.0 cc
ln -s gcc-4.0 gcc
ln -s c++-4.0 c++
ln -s g++-4.0 g++
像我一样,您可能会收到一条错误消息,告诉您您无权访问这些文件。如果是这样,请尝试以下命令:
cd /usr/bin
sudo rm cc gcc c++ g++
sudo ln -s gcc-4.0 cc
sudo ln -s gcc-4.0 gcc
sudo ln -s c++-4.0 c++
sudo ln -s g++-4.0 g++
Sudo 可能会提示您输入密码。如果您以前从未使用过 sudo,请尝试按 Enter 键。如果这不起作用,请尝试使用您的主管理员帐户的密码。
其他可能的解决方案 您可以将构建变量输入到 Eclipse 中。我试过这个,但我对此知之甚少。如果您想感受一下,您可能需要的标志是 -arch i686。说真的,GCC-4.0 一直为我工作,我现在看不出有任何理由切换。可能有一种方法可以更改编译器本身的默认值,但我对它的了解还不够。
希望这对您有所帮助且内容丰富。编码不错!
【问题讨论】:
-
哦,还有一件事不要忘记在更改链接之前记录它们!如果您不想更改系统范围的设置,请在 /usr/bin 之前的 PATH 中添加一个目录(例如,$HOME/bin),并在其中创建符号链接如果您想更改回来,这是我将使用的代码: cd /usr/bin sudo rm cc gcc c++ g++ sudo ln -s gcc-4.2 cc sudo ln -s gcc-4.2 gcc sudo ln -s c++-4.2 c++ sudo ln -s g++-4.2 g++ 你要检查您的 /usr/bin 并查找类似“gcc-4.x”的文件。如果不是 4.0 或 4.2,请将上面的版本号替换为您拥有的版本号。
-
你应该把这个放在你的问题下面。
-
首先遇到了这个问题:stackoverflow.com/questions/1788043/…,然后我就遇到了这个问题。感谢您的帖子。
标签: c++ eclipse executable osx-snow-leopard