2011-12-16 98 views
1

在Mac OS X机器上安装的gcc和g ++编译器是否与Ubuntu(Linux)GNU gcc和g ++编译器不同?GNU gcc和g ++

我正在使用Eclipse开发C++程序,并且有工具链部分,它说MacOSX GCC,我想知道是否需要安装另一个编译器,以便可执行文件也可以在Linux机器上运行。

我对C++开发的技术细节有点新,所以我很抱歉如果这个问题没有意义。

+5

即使您的gcc版本与Ubuntu相同,它输出的程序也是不同的。首先,Linux程序使用ELF可执行格式,但Mac不会(我不记得他们使用了什么,谷歌搜索应该告诉你)。你所描述的称为交叉编译,即使这样,一个二进制文件也很少在两个平台上运行(你需要为每个编译一个单独的程序)。 – 2011-12-16 02:58:23

回答

1

它不太可能在Mac和Linux上执行二进制。如果很可能二进制不会在不同的发行版的Linux之间执行。您可以为每个操作系统编译二进制文件。或者,您可以为您的应用程序分发源代码,并让用户自己编译它。

不同版本的libstdC++。so很可能分布于不同的操作系统,这会导致您的问题。部分工作的解决方案是静态编译您的二进制文件,因此您不依赖于目标系统安装的库版本。

+1

如果在Mac平台上对最初在Linux平台上开发的代码所做的修改有可能在更改后尝试在Linux平台上编译代码时导致问题?我的意思是,我发现二进制文件在不同的平台之间是脆弱的,但是实际的源代码呢? – Cemre 2011-12-16 03:18:36

0

MacOS不是Linux,它可能与BSD有点相似,但绝对不是Linux。他们确实或可以使用相同编译器的不同配置,但程序不兼容。

要在两者上运行相同的程序的唯一方法是如果您有类似Wine的东西来提供兼容性层。