Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在OSX上更新GCC_C++_Macos_Gcc_Compiler Construction_G++ - Fatal编程技术网

C++ 在OSX上更新GCC

C++ 在OSX上更新GCC,c++,macos,gcc,compiler-construction,g++,C++,Macos,Gcc,Compiler Construction,G++,所以我是一个新的程序员,我刚刚在我的Macbook上安装了XCode以获得GCC。我认为Xcode是在OSX上获得GCC的唯一方法。现在,当我运行我的Hello World应用程序时,在C++中,G++提出它是4.0.1版本,但是当我从G i开始查找命令时,也看到了G++- 4.2。有没有办法使4.2成为默认版本而不是4.0.1,还有没有办法将gcc更新到最新版本4.4.0 编辑:好的,我安装了macports和gcc4.4,它在终端上显示为gcc-mp-4.4,我如何使用gcc_select将

所以我是一个新的程序员,我刚刚在我的Macbook上安装了XCode以获得GCC。我认为Xcode是在OSX上获得GCC的唯一方法。现在,当我运行我的Hello World应用程序时,在C++中,G++提出它是4.0.1版本,但是当我从G i开始查找命令时,也看到了G++- 4.2。有没有办法使4.2成为默认版本而不是4.0.1,还有没有办法将gcc更新到最新版本4.4.0


编辑:好的,我安装了macports和gcc4.4,它在终端上显示为gcc-mp-4.4,我如何使用gcc_select将其设置为默认值,比如命令和内容。谢谢。

如果您安装macports,您可以选择安装gcc,然后选择您的gcc版本

/opt/local/bin/port install gcc_select
要查看您的版本,请使用

port select --list gcc
要选择版本,请使用

sudo port select --set gcc gcc40

您可以在您的框中有多个GCC版本,以选择要使用的版本,并使用完整路径调用它,例如,在命令行上使用完整路径而不是
g++
usr/bin/g++(取决于您的GCC所在的位置)

对于编译项目,这取决于您使用什么系统,我不确定Xcode(我对默认atm很满意),但当您使用makefile时,可以设置GXX=/usr/bin/g++等等

编辑

现在有了一个
xcrun
脚本,可以查询它来选择mac上构建工具的适当版本。除了
manxcrun
之外,我还在谷歌上搜索了这个解释,它几乎概括了如何使用它。

使用“gcc\u select-l”

> gcc_选择-l

gcc40 mp-gcc44

> gcc\u选择mp-gcc44


/usr/bin
中键入

sudo ln-s-fg++-4.2g++

sudo ln-s-f gcc-4.2 gcc


这应该可以做到。

无论苹果在xcode中作为默认gcc提供什么(10.6上的4.2.1,之前的4.0.1)都经过了苹果公司的测试(和维护)以及在OS X上构建软件的“标准”。其他一切都不是,所以如果你想开发软件,请三思,或者成为gcc/OSX测试人员。

我只是想说,使用软链接来完成这项任务是一个糟糕的、不好的、糟糕的想法

编写软件的关键之一是可复制性——您希望每次都能得到相同的结果。这些系统非常复杂,您需要减少所有不可见的错误源

软链接是一个无形的错误来源。这类事情你会在一个月内忘记,然后转移到另一台机器上,想知道为什么你会得到不同的结果——或者,你会尝试升级你的系统,你会得到奇怪的错误,因为它不希望那里有软链接

此外,这并不能保证有效——特别是,还不清楚您是否能够获得正确的系统包含文件,这些文件在gcc迭代之间肯定发生了变化

gcc_select是一种系统化的方法,它可以做同样的事情,并且可以预期效果,或者在最坏的情况下,您可以提交一份bug报告,并获得最终的修复或自己修复


不幸的是:-(gcc_select不影响XCode使用的编译器,所以如果您需要在XCode中工作,这不是一种方法(我是这样做的)。我仍然不知道这种方式可能是什么。

我知道这是一个旧请求。但它可能对某些人仍然有用。对于当前版本的MacPorts,您可以使用port命令选择默认的gcc版本。 要列出gcc的可用版本,请使用:

$sudo端口选择--列出gcc

Available versions for gcc:
gcc42
llvm-gcc42
mp-gcc46
none (active)
要将gcc设置为MacPorts版本,请执行以下操作:

$sudo端口选择--设置gcc mp-gcc46


以下使用的配方适用于我更新到gcc/g++4.7:

$ brew tap SynthiNet/synthinet
$ brew install gcc47

在帖子中找到它。

您可以手动安装GCC

要么通过

sudo port install gcc46
或者,您可以从中的一个镜像下载源代码,例如

tar xzvf gcc-4.6.0.tar.gz cd gcc-4.6.0 /配置 制造

如果你有多个版本,那么你可以选择一个

port select --list gcc

请记住,mac上的
port
称为macport
https://www.macports.org/install.php
并将bin添加到您的路径中
导出路径=$path:/opt/local/bin

我没有安装该端口,但我仍然选择了gcc。这是一个使用OS X 10.4的旧Xcode。如果您需要有关MacPorts的更多信息,请访问此处()它们的gcc端口高达4.5。我已经这样做了,但是当我启动python解释器时,我仍然看到gcc 4.0.1现在似乎命令是
port select--list gcc
to list和
port select--set gcc mp-gcc45
to set(用您的版本替换mp-gcc45)您还必须安装GCCSYSEL。为什么我得到这个警告和这个错误:<代码>警告:端口定义有两个多星期了,考虑通过运行“端口SelfPUDATE”来更新它们。错误:没有足够的权限写入Mac端口安装前缀。< /代码>……一年半之后,GCC 4.2仍然是L上的XCODE标准。John Zwinck:事实上,/usr/bin/gcc是llvm-gcc-4.2,整个编译器策略显然是llvm/clang。所以我不希望在gcc/OS X前端发生太多事情。XCode 4.6发行说明:“XCode 4.6是最后一个包含llvm-gcc编译器和GDB调试器的版本。”请确保先执行
sudo-port-install-gcc\u选择
。否则您将得到
错误:“list”命令失败:指定的组“gcc”不存在。
您可以在目标或项目设置中设置编译器XCode使用的位置(我恐怕记不起确切位置)是编译器的路径。我需要将其更改为编译某些库。在
/usr/bin/
文件夹中创建链接是一个很大的禁忌。当出现问题时,您将不得不重新安装整个操作系统