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

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

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

当我在Ubuntu上编译它运行良好。

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

恐怕你不能给gcc最小的可移植性。

当然,你可以像这样构建一个交叉编译器,但是我建议你使用和编译一个Ubuntu虚拟机。

你需要建立一个交叉编译器。 使用GNU工具链,过程如下所示:

  1. 下载binutils , gcc和glibc 。
  2. Untar bintuls(类似于binutils-xyz)。
  3. mkdir binutils-linux
  4. cd binutils-linux
  5. ../binutils-xyz/configure –target = i386-ubuntu-linux(不知道确切的目标)
  6. 使
  7. sudo make install
  8. cd ..
  9. untar gcc(类似于gcc-xyz)。
  10. mkdir gcc-linux
  11. cd gcc-linux
  12. ../gcc-xyz/configure –target = i386-ubuntu-linux(不知道确切的目标)
  13. 使
  14. sudo make install
  15. cd ..
  16. 解压glibc(类似glibc-xyz)
  17. mkdir glibc-linux
  18. CD glibc-linx
  19. ../glibc-xyz/configure –target = i386-ubuntu-linux(不知道确切的目标)
  20. 使
  21. sudo make install
  22. cd ..

我从来没有尝试OSX作为主机操作系统,所以我不知道是否有任何其他的复杂,但这是一般的做法。 我从内存中工作,所以如果你需要更多的帮助,请添加评论。