我有一个非常简单的 C 程序,它只使用标准库函数进行一些密码计算。
我将在 Ubuntu(10.04,32 位)上运行该程序,并使用带有 -m32 标志的 cc 在 OS X 10.6 上编译它。当我尝试在 Ubuntu 上运行它时,我收到错误消息“无法执行二进制文件。”
当我在 Ubuntu 上编译它时,它运行良好。
有什么简单的方法可以将 OS X 上的代码编译成可以在 Ubuntu 上运行的二进制文件吗?如果不是,导致二进制文件不兼容的差异是什么?
最佳答案
您需要设置一个交叉编译器。使用 GNU 工具链,过程看起来像这样:
- 下载binutils , gcc , 和 glibc .
- 解压 bintuls(解压到 binutils-x.y.z)。
- mkdir binutils-linux
- cd binutils-linux
- ../binutils-x.y.z/configure --target=i386-ubuntu-linux(不确定确切目标)
- 制作
- sudo 进行安装
- CD ..
- 解压 gcc(到 gcc-x.y.z 之类的东西)。
- mkdir gcc-linux
- cd gcc-linux
- ../gcc-x.y.z/configure --target=i386-ubuntu-linux(不确定确切目标)
- 制作
- sudo 进行安装
- CD ..
- 解压 glibc(到 glibc-x.y.z 之类的东西)
- mkdir glibc-linux
- cd glibc-linx
- ../glibc-x.y.z/configure --target=i386-ubuntu-linux(不确定确切的目标)
- 制作
- sudo 进行安装
- CD ..
我从未尝试过将 OSX 作为主机操作系统,所以我不知道是否还有任何其他并发症,但这是一般方法。我是靠内存工作的,所以如果您需要更多帮助,请添加评论。
关于在 OS X 上编译 C 程序以在 Linux 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6990333/