咨询:为什么我的OSX终端上出现了clang错误?

时间:2013-12-13 18:39:02

标签: linux macos gcc terminal clang

我在linux VM上有以下文件:

gc.h
gc.c
test.c
test.out

我在终端运行命令:

gcc -g test.c gc.c gc.h -o test.out

一切都在编译。然后我运行相同的文件(我复制了它们)并在我的OSX终端上运行命令:

gcc -g test.c gc.c gc.h -o test.out

然后我收到以下错误:

clang: error: cannot specify -o when generating multiple output files

我收到此错误有一个简单的原因吗?我不明白,因为我没有生成多个文件?我也搜索了这个,但找不到任何相关的东西。

我很感激你的线索。我现在知道它与我运行OSX 10.9 Mavericks和xcode 5.0.2的事实有关。所以现在我正在尝试切换到gcc48。所以我认为使用brew install gcc48做起来最简单。上周我刚刚用brew做了一个重大更新,我看到了这条消息:

Error: No available formula for gcc48
Searching taps...
homebrew/versions/gcc48

之前有人看过这个吗?我对brew工具有点不太熟悉。这是什么意思?是的,我用谷歌搜索了这个,但今天似乎没有太多运气。然后,我发现了这个Homebrew install specific version of formula?,我认为我得到了它。但不太确定为什么普通命令不能按预期工作?

2 个答案:

答案 0 :(得分:4)

您的问题是您正在尝试编译头文件:

gcc -g test.c gc.c gc.h -o test.out
                   ^^^^

clang将此解释为尝试预编译标头。虽然这是一件很有用的事情,但这与同时同时编译你的应用程序是不兼容的。

从编译器命令行中删除它,你会没事的。

答案 1 :(得分:2)

OSX在他们的gcc命令中使用clang而不是gcc。只需在你的linux vm和你的osx机器上执行gcc --version,你会发现它们是不同的编译器。

你可以使用brew安装真正的gcc(例如,brew install gcc48)然后在你的osx上使用它,如果你想获得与linux vm完全相同的行为。