如何在我的mac上编写跨平台的c ++程序?

时间:2012-01-11 22:12:29

标签: c++ gcc portability

我的大学教授在他的c ++课程中要求我们:我们必须使用gnu C ++编译器(GCC)编写程序。我知道安装xcode后,我得到了一个苹果版的gcc。但是,据我所知,这并不完全交叉兼容。所以我尝试使用mac ports安装gnu gcc编译器,但是我没有成功。做完之后:

port install gcc47

当我去终点站并运行时:

gcc47 -v

我得到“找不到命令” 我跑的时候:

gcc -v

我明白了:

gcc version 4.2.1 (Apple Inc. build 5666) (dot 3)

显示我仍在使用Apple的版本。我不理解的部分是:

  1. 如何安装gcc(gnu版本,而不是苹果版本)
  2. 如何将它与ide一起使用,例如eclipse?

2 个答案:

答案 0 :(得分:0)

您使用的GCC版本(Apple或gnu native)与您无关。

编写可移植C ++与编译器无关 - 除了确保编译器最好遵守C ++标准之外。 幸运的是,GCC是最好的C ++编译器之一。

你不打算做跨平台的C ++本身,因为真正的可移植C ++在各种系统的各种C ++编译器状态下编写起来有点痛苦(例如VAX / VMS上的CC没有' t支持模板...)。我怀疑你想要做的是确保你在mac上编写的代码,可以由你的教授编译。只要GCC可以在你的Mac上处理它,它应该没问题。

那么就你的具体问题而言:

您的第一个问题是不必要的,因为您可以使用Apple提供的g ++来编译代码。

对于您的第二个问题,我强烈建议您在尝试学习时不要使用IDE。 IDE提供了一些非常好的节省时间的功能,但它们隐藏了一些重要的方面,我认为值得在学习过程的早期阶段挣扎,这将有助于增强您的C ++技能。虽然事情确实变得更好,但是一些IDE因创建非可移植C ++而臭名昭着(即使用void main())。

如果您仍然使用Eclipse或XCode,因为您使用哪种GCC安装并不重要,默认设置应该可以正常工作。

答案 1 :(得分:0)

我在过去通过端口安装gcc47时遇到了麻烦,但是gcc46按预期进行了。您可能还想安装gcc_select

从那里,你可以使用gcc_select,或者在Eclipse的工具链编辑器中明确指定路径。

其他说明:

  • 如果您不需要C ++ 11功能,那么Apple的GCC 4.2.1应该可以正常工作。也许您可以详细说明为什么不能使用它。基本上,Apple在某些情况下添加了一些工具链扩展(标记为APPLE_ONLY),并且您可以很好地控制启用/禁用哪些选项。

  • 最近版本的Clang附带Xcode,可以很好地处理C ++(包括对C ++ 11的一些支持)。 GCC中有一些我在使用Clang时想念的高级内容,但是Clang目前的C ++支持非常好。