2010-09-19 3 views
9

Я запускаю Linux Ubuntu 10.04, и у меня есть компьютер с Windows 7 и MacBook, работающий под управлением Mac OS X 10.6.4. Как я могу написать простую программу C (как в НЕ QT!), Как:Перекрестная платформа C?

#include <stdio.h> 

int main(int argc, char **argv) 
{ 
    printf("Hello Linux and Mac and Windows!") 
    return 0; 
} 

работать на всех моих машинах без необходимости компилировать эту программу на Ubuntu, то для Windows 7, то Mac OS ИКС? Могу ли я просто создать это в Ubuntu и скомпилировать его для запуска в нескольких разных операционных системах?
ОБНОВЛЕНИЕ
Я не собираюсь производить ОДИН двоичный код для запуска на всех. Я хочу создать THREE двоичные файлы из одного и того же кода C в той же ОС.

+1

Возможный дубликат [Как скомпилировать для OS X в Linux или Windows?] (Http://stackoverflow.com/questions/693952/how-to-compile-for-os-x-in-linux-or- окна) – richq

+0

Я так не думаю. У меня уже есть Mac с операционной системой X. –

+0

Чтобы получить надежный вывод, вам нужно включить новую строку в оператор 'printf()'. –

ответ

11

Исполняемый файл имеет определенный формат (например, ELF) и архитектуру (например, x86). Таким образом, вам придется скомпилировать несколько раз. Однако можно перекрестно скомпилировать, например, Windows 7 x86 и Mac OS X x86 от Ubuntu. Процедуры для каждого разные, как и следовало ожидать.

Для Windows вам понадобится mingw32. См. Compile Windows C console applications in Linux .

Для OS X, см. How to compile Intel Mac binaries on Linux? , который ссылается на a tutorial.

Вы можете найти более подробную информацию о каждом из них.

+0

Для учебника OS X он кажется старым. Будет ли он работать и для iPhone SDK? –

+0

Вы можете использовать [Cygwin] (http://cygwin.org/) в качестве альтернативы MingW32. –

+0

@Mohit, я не знаю, вы спросили о MacBook. Для Linux-> iPhone см. [ Запуск разработки приложений для iPhone в Linux? ] (http://stackoverflow.com/questions/276907/starting-iphone-app-development-in-linux); это, конечно, не просто. –

2

К сожалению, формат исполняемого файла Linux, Windows и OSX существенно различается в деталях. Невозможно создать единый двоичный файл, который работает на всех трех.

можно создавать исполняемые файлы Windows и OSX с использованием кросс-компиляторов из Linux (или наоборот в любой другой комбинации, какой вам нравится), но создание среды сборки, вероятно, является более сложной задачей, чем это стоит. См. http://www.kegel.com/crosstool/, если вы действительно хотите попробовать это.

+1

Проверьте обновление, я не хочу создавать двоичный файл SINGLE для работы на нескольких платформах. –

Смежные вопросы