【发布时间】:2011-10-17 11:46:37
【问题描述】:
首先,我对编程很陌生。
我有一个在 Snow Leopard 上使用 Xcode 4 构建的程序。 该项目的架构设置为“标准(32/64 位英特尔)”
之后我将可执行文件导出到 UNIX 计算机上运行。
ssh 到那台计算机
在终端(UNIX 计算机)中键入
./programname会给出以下响应: 执行格式错误。错误的架构。
该程序在我的 Mac 笔记本电脑上运行良好。
【问题讨论】:
首先,我对编程很陌生。
我有一个在 Snow Leopard 上使用 Xcode 4 构建的程序。 该项目的架构设置为“标准(32/64 位英特尔)”
之后我将可执行文件导出到 UNIX 计算机上运行。
ssh 到那台计算机
在终端(UNIX 计算机)中键入 ./programname 会给出以下响应:
执行格式错误。错误的架构。
该程序在我的 Mac 笔记本电脑上运行良好。
【问题讨论】:
当您编译一个程序时,它将 (*) 针对特定平台和特定操作系统进行编译。它也很可能针对一组特定的库进行编译。 通常这些参数正是计算机进行编译的参数(其他情况称为交叉编译)。
换句话说:在 Mac 上编译程序将生成一个仅在 Mac 上运行的二进制文件(除非再次进行交叉编译)。您的 UNIX 系统(顺便问一下,哪个 UNIX?)有不同的操作系统、不同的库,甚至可能有不同的 CPU 架构。
有些相关:Apple 将 Mac OS X 宣传为(或曾经宣传)为 UNIX。虽然 Mac OS X 肯定是 UNIX 级操作系统,但这并不意味着它与所有其他 UNIX 级操作系统二进制兼容。
* 几乎总是如此,除了旨在避免这种情况的系统(例如 Java)
【讨论】:
XCode编译的程序只能在MacOS X下运行。除非步骤2中的“UNIX计算机”运行的是MacOS,否则程序将无法运行。
【讨论】: