我有一个非常简单的C程序,它只使用标准库函数进行一些加密计算。在OS X上编译C程序以在Ubuntu上运行
我将在Ubuntu(10.04,32位)上运行该程序并使用带-m32标志的cc在OS X 10.6上对其进行编译。当我尝试在Ubuntu上运行它时,我收到错误消息“无法执行二进制文件”。
当我在Ubuntu上编译它运行良好。
是否有任何简单的方法将OS X上的代码编译为可在Ubuntu上运行的二进制文件?如果不是,导致二进制不兼容的区别是什么?
我有一个非常简单的C程序,它只使用标准库函数进行一些加密计算。在OS X上编译C程序以在Ubuntu上运行
我将在Ubuntu(10.04,32位)上运行该程序并使用带-m32标志的cc在OS X 10.6上对其进行编译。当我尝试在Ubuntu上运行它时,我收到错误消息“无法执行二进制文件”。
当我在Ubuntu上编译它运行良好。
是否有任何简单的方法将OS X上的代码编译为可在Ubuntu上运行的二进制文件?如果不是,导致二进制不兼容的区别是什么?
恐怕你不能给出gcc的最小可移植性。
当然你可以构建一个交叉编译器like this但我建议你使用和编译一个Ubuntu虚拟机。
你可以!我之前完成了这个,成功了。GCC非常便携。它是不可移植的支持结构(库和内核接口)。建立你的交叉编译器并不是特别容易,并且在这个领域有很多地雷不知情。鉴于现在无处不在的虚拟机,使用虚拟机更简单,更安全。 –
您需要设置一个交叉编译器。使用GNU工具链,过程看起来是这样的:
我我从未尝试将OSX作为主机操作系统,所以我不知道是否还有其他复杂情况,但这是一般方法。我在记忆中工作,所以如果您需要更多帮助,请添加评论。
感谢您的信息。我想我将在VirtualBox中安装Ubuntu的副本以用于编译。这似乎是最简单的路线。 –
您需要将Linux内核标题贴近您所定位的发行版。除非获得这些内容,否则GLIBC无法连接到内核。 –
请注意,编译gcc需要超过几分钟的时间......并且可能需要一些调查才能为binutils和glibc获取正确的配置选项。 – RBerteig
部分重复:http://stackoverflow.com/questions/5245444/cross-compiler-for-linux-on-mac-os-x这也链接到['crosstool-NG'](http:// crosstool -ng.org)。 – darvids0n