执行二进制文件

dar*_*sky 3 unix linux macos x86 gcc

我下载了一个使用GCC 4.4.4为x86-64 Red Hat Linux编译的二进制文件(一个C程序).

当我尝试在运行GCC 4.2.1的Mac OS X(运行Lion也是x86-64)上运行它时会说:cannot execute binary file?它无法将其检测为二进制文件.

为什么会这样做?我相信gcc版本与此无关,因为该文件已经被编译.它已经为x86-64编译,其中两台机器都运行.有人可以解释一下吗?

Jor*_*ner 11

有不同的二进制格式.Linux系统将ELF用于可执行文件和库,但Mac OS X使用Mach-O格式.Windows使用另一种静态:PE格式.


Adr*_*ish 8

为特定操作系统编译的二进制文件极不可能在另一个操作系统上运行.要么为Mac获取二进制文件,要么获取源代码并自行编译.

有许多问题会导致问题 - libc和libstdc ++的版本,.so库的版本可能会有所不同 - 与操作系统本身不同的API接口.或者甚至是不同的二进制格式(即VMS二进制文件不在AIX上运行).