我有一个非常简单的C程序,只使用标准库函数进行一些encryption计算。
我将在Ubuntu(10.04,32位)上运行该程序,并使用带有-m32标志的cc在OS X 10.6上对其进行编译。 当我试图在Ubuntu上运行它时,我收到错误信息“无法执行二进制文件”。
当我在Ubuntu上编译它运行良好。
有什么简单的方法将OS X上的代码编译成可以在Ubuntu上运行的二进制文件? 如果不是,导致二进制不兼容的区别是什么?
恐怕你不能给gcc最小的可移植性。
当然,你可以像这样构建一个交叉编译器,但是我建议你使用和编译一个Ubuntu虚拟机。
你需要建立一个交叉编译器。 使用GNU工具链,过程如下所示:
- 下载binutils , gcc和glibc 。
- Untar bintuls(类似于binutils-xyz)。
- mkdir binutils-linux
- cd binutils-linux
- ../binutils-xyz/configure –target = i386-ubuntu-linux(不知道确切的目标)
- 使
- sudo make install
- cd ..
- untar gcc(类似于gcc-xyz)。
- mkdir gcc-linux
- cd gcc-linux
- ../gcc-xyz/configure –target = i386-ubuntu-linux(不知道确切的目标)
- 使
- sudo make install
- cd ..
- 解压glibc(类似glibc-xyz)
- mkdir glibc-linux
- CD glibc-linx
- ../glibc-xyz/configure –target = i386-ubuntu-linux(不知道确切的目标)
- 使
- sudo make install
- cd ..
我从来没有尝试OSX作为主机操作系统,所以我不知道是否有任何其他的复杂,但这是一般的做法。 我从内存中工作,所以如果你需要更多的帮助,请添加评论。