在OS X上编译C程序以在Linux上运行

时间:2011-08-09 01:02:25

标签: c linux macos ubuntu cross-platform

我有一个非常简单的C程序,只使用标准库函数进行一些加密计算。

我将在Ubuntu(10.04,32位)上运行该程序,并使用带有-m32标志的cc在OS X 10.6上编译它。当我试图在Ubuntu上运行它时,我收到错误消息“无法执行二进制文件。”

当我在Ubuntu上编译它时运行正常。

有没有简单的方法将OS X上的代码编译成可在Ubuntu上运行的二进制文件?如果不是,导致二进制文件不兼容的区别是什么?

2 个答案:

答案 0 :(得分:4)

您需要设置交叉编译器。使用GNU工具链,该过程如下所示:

  1. 下载binutilsgccglibc
  2. Untar bintuls(像binutils-x.y.z这样的东西)。
  3. mkdir binutils-linux
  4. cd binutils-linux
  5. ../ binutils-x.y.z / configure --target = i386-ubuntu-linux(确定目标不确定)
  6. 使
  7. sudo make install
  8. cd ..
  9. 解压缩gcc(类似于gcc-x.y.z)。
  10. mkdir gcc-linux
  11. cd gcc-linux
  12. ../ gcc-x.y.z / configure --target = i386-ubuntu-linux(确定目标不确定)
  13. 使
  14. sudo make install
  15. cd ..
  16. 解开glibc(类似于glibc-x.y.z)
  17. mkdir glibc-linux
  18. cd glibc-linx
  19. ../ glibc-x.y.z / configure --target = i386-ubuntu-linux(确定目标不确定)
  20. 使
  21. sudo make install
  22. cd ..
  23. 我从来没有尝试过OSX作为主机操作系统,所以我不知道是否还有其他并发症,但这是一般方法。我正在从记忆中工作,所以如果你需要更多的帮助,请添加评论。

答案 1 :(得分:1)

我担心你无法给出gcc的最低可移植性。

当然你可以构建一个交叉编译器like this,但我建议你使用ubuntu虚拟机进行编译。