在Mac上运行linux g ++编译的代码

是可以在Linux上使用g ++编译c ++代码并在Mac OSX上运行代码? 我有几个使用一个.cpp文件,几个.h文件和一个MakeFile的c ++程序,它们会生成一个.o文件,我通常通过terminal运行。 但是,我想find一种方法,只发送可执行文件到我的合作伙伴的家庭mac,所以他可以在本地审查我的程序。 (我也用这些程序中的一部分来进行自动math计算,所以在本地运行会非常方便)。 我知道OSX通常使用.app软件包,但我并不十分熟悉这是如何工作的。 .o文件(或者在这里比较常见的./a.out文件)只能在OSX上运行? 如果我不需要,我宁愿不在这台机器上安装xCode。

万分感谢

可以在Linux上编译C ++并在OS X上生成可执行文件。但是,您必须以特殊方式编译代码,称为“交叉编译”。 设置交叉编译并不是特别简单,而且您需要来自您所定位平台的某些文件。

直接在目标平台上编译就简单多了。

如果Mac安装了最新版本的OS X,则可以轻松安装必要的命令行工具:只要尝试运行其中一个命令行或运行命令xcode-select --install ,OS X就会要求安装命令行工具。 (这将在命令行上安装必要的编译工具,而不是整个Xcode应用程序。)

我知道OSX通常使用.app软件包,但我并不十分熟悉这是如何工作的。

你不需要为简单的C ++程序担心.app包。 OS X可以像linux一样运行常规的可执行文件。 (尽管可执行文件格式不同:OS X使用Mach-O格式,而不是Linux的ELF格式。)

.o文件(或者在这里比较常见的./a.out文件)只能在OSX上运行?

.o文件,称为“对象”文件,不会自行运行; 他们必须被“链接”成可执行文件。 由gcc工具链创建的可执行文件的默认名称是'a.out'(如POSIX标准中所指定)。

如果你设置了交叉编译到OS X那么是的,你可以生成一个只能在OS X上运行的a.out文件。你通常为Linux生成的a.out文件(即不交叉编译)将不能在OS上运行X。

如果我不需要,我宁愿不在这台机器上安装xCode。

Xcode不能在Linux上运行,所以你不能运行它。 相反,你会得到一个交叉编译到OS X的gcc版本,或者你会安装一个不同的编译器,clang(和链接器,lld而不是ld或者gold)。

对你的问题一个简单的答案是不。 你不能在linux下编译程序,并期望它在MacOSX上运行。

但是,MacOSX只是另一个UNIX操作系统,你可以使用MakeGCC来建立你的项目。 如果你的伙伴不知道如何做到这一点,我建议让他让你的SSH进入他的机器。

但是,如果您在Mac上构建可执行文件,则需要安装XCode。 即使你从酿造中使用GCC

另一种选择是让你的合作伙伴安装一个linux虚拟机。 他可以使用ORACLE打开盒子来安装Linux并在macosx中运行你的代码。

我建议你在亚马逊注册一个免费的EC2(弹性计算云)帐户,并采取免费的基本Linux框。 在Linux上安装和构建你的软件,然后让你的合作伙伴登录并使用OSX上已有的ssh运行它。 所以不需要在Mac上安装任何东西。

这样就不需要在自己之间传输文件,并且在进行更改时更新内容 – 只需要一个环境来管理和保持最新状态,以便随时随地访问。