Неправильная архитектура при запуске исполняемого файла из Xcode4 в UNIX

Во-первых, я очень новичок в программировании.

  1. У меня есть программа сборки с использованием Xcode 4 на Snow Leopard. Архитектура проекта установлена ​​на «Стандартная (32/64-битная информация)».

  2. После этого я экспортировал исполняемый файл на компьютер UNIX для запуска.

  3. ssh к этому компьютеру

  4. Ввод ./programname в терминале (компьютера UNIX) дает следующий ответ: Ошибка формата Exec. Неправильная архитектура.

Программа отлично работает на моем ноутбуке Mac.


person user998996    schedule 17.10.2011    source источник


Ответы (2)


Когда вы компилируете программу, она (*) компилируется для конкретной платформы и конкретной операционной системы. Он также, скорее всего, будет скомпилирован для определенного набора библиотек. Обычно эти параметры совпадают с параметрами компьютера, выполняющего компиляцию (остальные случаи называются кросс-компиляцией).

Другими словами: компиляция программы на Mac создаст двоичный файл, который работает только на Mac (если, опять же, вы не выполняете кросс-компиляцию). Ваша система UNIX (кстати, какая UNIX?) имеет другую операционную систему, другие библиотеки и, возможно, даже другую архитектуру процессора.

Отчасти связано: Apple рекламировала (или использовала рекламу) Mac OS X как UNIX. Хотя Mac OS X, безусловно, является операционной системой класса UNIX, это не означает, что она двоично совместима со всеми другими ОС класса UNIX.

* почти всегда, за исключением систем, призванных избежать этого (например, Java)

person Joachim Sauer    schedule 17.10.2011

Программы, скомпилированные с помощью XCode, будут работать только под MacOS X. Если «компьютер UNIX» на шаге 2 не работает под управлением MacOS, программа не сможет работать.

person D.Shawley    schedule 17.10.2011