如何指定 MacPorts 使用哪个 GCC?

hpy*_*hpy 6 macports gcc version macos

我编译了 GCC 4.4.3 并将其安装在 /usr/local/bin 中,但是每当我通过 MacPorts 1.8.2 安装端口时,详细输出显示 MacPorts 正在使用 /usr/bin/gcc-4.2:

检查 gcc ... /usr/bin/gcc-4.2

如何让 MacPorts 找到我自己的 GCC 4.4.3?这是我现有的路径:

/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/lib:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
Run Code Online (Sandbox Code Playgroud)

我正在运行 Mac OS X 10.6.2 Snow Leopard。

rai*_*mue 7

MacPorts 尽可能使用 Apple 提供的编译器,因为它们已针对该平台进行了高度修补。例如,它们允许通过指定 -arch 标志来构建多个体系结构,这在 FSF gcc 中是不可能的。

如果您更改 /usr/bin/ cc 中的符号链接,MacPorts 仍会尝试使用只有 Apple 版本才能理解的标志。这可能导致无法使用 MacPorts 编译任何内容。

相信 MacPorts 开发人员,使用 Apple 提供的编译器是最好的方法。


and*_*dam 7

相应地在 Portfile 中设置configure.compiler变量:

configure.compiler    macports-gcc-4.3
Run Code Online (Sandbox Code Playgroud)

或将configure.compiler=macports-gcc-4.3附加到您的命令中。

参见 这个维基页面

  • 我无法确定问题是什么,“gcc 4.4.3 零长度字符串问题”的第一个 Google 结果就是这个超级用户问题。 (2认同)

Ben*_*ing 3

第一个答案:不要!根据我的经验,GCC 4.4.3 在 Snow Leopard 上无法正常工作。它会导致零长度字符串出现问题。

第二个答案:编辑 /usr/bin 中的符号链接以引用 4.4 内容。这是我为此编写的脚本:

rm /usr/bin/c++ 
ln -s /usr/bin/c++-${1} /usr/bin/c++
rm /usr/bin/cc
ln -s /usr/bin/cc-${1} /usr/bin/cc
rm /usr/bin/cpp
ln -s /usr/bin/cpp-${1} /usr/bin/cpp
rm /usr/bin/g++
ln -s /usr/bin/g++-${1} /usr/bin/g++
rm /usr/bin/gcc
ln -s /usr/bin/gcc-${1} /usr/bin/gcc
rm /usr/bin/gcov
ln -s /usr/bin/gcov-${1} /usr/bin/gcov
Run Code Online (Sandbox Code Playgroud)

我将其命名为 chgCver,因此要将编译器更改为 4.4,我需要输入chgCver 4.4. 当然,在运行之前,您还需要确保,例如,c++-4.4 指向正确的位置(可能/opt/local/bin/gcc-mp-4.4)等。如果您倾向于忽略我的内容,我可以为您提供更多细节第一个和第三个答案。

第三个答案:不要!(参见第一个答案。)

  • 不需要这个,只需使用“gcc_select”即可。 (3认同)
  • 当我们谈论使用 MacPorts 时,“gcc_select”端口可以完成相同的工作,甚至更多。 (3认同)