GCC 4.2 版本丢失

3
在我的新款MacBook Pro上,配备了OSX Lion和XCode 4.1,我遇到了一些关于gcc的问题。
在/usr/bin中,我找不到gcc-4.2。
我只有以下这几个版本:
i686-apple-darwin11-llvm-gcc-4.2
llvm-gcc
llvm-gcc-4.2 

因此,当我尝试通过 port select --set gcc gcc42 选择gcc42时,它会返回以下错误: Selecting 'gcc42' for 'gcc' failed: could not create new link "/opt/local/bin/gcc": target "/usr/bin/gcc-4.2" doesn't exist

然而,port select gcc 返回以下版本:

apple-gcc42
gcc42
llvm-gcc42 (active)
mp-gcc44

我该如何解决这个问题?

谢谢!

6个回答

7

我可以使用符号链接在Mountain Lion上解决这个问题:

sudo ln -s /usr/bin/llvm-gcc-4.2 /usr/bin/gcc-4.2

希望这能帮助到某些人。

6

在安装了Xcode 4.1后,应该会有一个/usr/bin/gcc-4.2。然而,在最近的Xcode 4.2更新中,苹果终于删除了他们修改过的标准gcc-4.2。现在剩下的是llvm-gcc42(也被链接到gcc)和新的非gcc C编译器clang。苹果正在向clang转变;第一步是使用混合的llvm-gcc42。已经有一些报告称使用新编译器中的任何一个都存在问题。你应该利用这段时间来确定是否存在问题,并在必要时修复代码并向苹果报告错误。同时,如果你一定需要旧的gcc-4.2,请通过MacPorts构建类似于以前由苹果修改的版本。

port install apple-gcc42

但你将会逆流而行。

谢谢!我已经从Macport安装了gcc44,并且可以通过sudo port select -set gcc mp-gcc44进行选择。但是我在/usr/bin/中找不到它。 - Maverik
1
好的,我在/opt/local/bin/中找到了它。实际上问题是我正在编译的软件正在寻找/usr/bin/gcc42。如果${CMAKE_SYSTEM} MATCHES "Darwin-11.*" - Maverik
MacPorts从不将任何东西安装到/usr/bin;这是由苹果作为OS X的一部分进行专门管理的。是否可以通过CC环境变量或类似方法来覆盖编译器选择? - Ned Deily

5

Xcode 4.3后,需要单独安装命令行工具。打开XCode -> 首选项 -> 下载,点击组件按钮,然后点击“命令行工具”选项旁边的安装按钮。


2

我遇到了同样的问题。

我通过创建符号链接解决了这个问题。

像这样:

cd /usr/bin

那么:
sudo ln -s llvm-gcc-4.2 gcc-4.2

0

我篡改了Makefile的内部结构,发现一个调用选项提供了过多的参数;将变量替换为在我的机器上调用函数的实际结果(删除多余的参数),然后再次运行make就可以工作了。


2
什么选项?你介意展示一下你对makefile所做的更改吗? - Tivie

0

你可以考虑从源代码code编译一个更新的GCC(例如4.6.2)。苹果公司对GCC不再关注,但自4.2以来,GCC取得了重大进展。

而且你可能可以使用llvm-gcc42作为GCC编译器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接