Кросс-компиляция C++; от Linux до Windows это действительно работает?

Абсолютно необходимо выдать исключение от конструктора, если Вы неспособны создать доступный объект. Это позволяет Вам обеспечивать надлежащие инварианты в своем классе.

На практике, Вам, вероятно, придется быть очень осторожным. Помните, что в C++, деструктор не назовут, поэтому если Вы бросите после выделения Ваших ресурсов, необходимо проявить большую заботу для обработки этого правильно!

Эта страница имеет полное обсуждение ситуации в C++.

5
задан Open the way 4 December 2009 в 10:43
поделиться

5 ответов

Изучите mingw , набор инструментов для создания приложений Win32 в Linux. Если программы не зависят от каких-либо специфических для Linux функций, не поддерживаемых mingw, все будет в порядке.

7
ответ дан 18 December 2019 в 14:47
поделиться

Обратите внимание, что кросс-компиляция - это не то же самое, что кроссплатформенность. При кросс-компиляции вы компилируете код в исполняемый файл Windows в системе Linux, а затем переносите исполняемый файл в систему Windows. При кроссплатформенности вы переносите исходный код в окно Windows и компилируете в исполняемый файл Windows с помощью компилятора Windows.

Первое довольно сложно (но не невозможно), второе очень просто, используя компилятор, такой как MinGW, другие упоминали.

4
ответ дан 18 December 2019 в 14:47
поделиться

Я ежедневно компилирую кросс-компиляцию. Но я не настраиваю кросс-компиляторы ежедневно. Это может быть сложно, но, безусловно, возможно.

1
ответ дан 18 December 2019 в 14:47
поделиться

Пока вы используете стандартный C ++, ваш код будет кроссплатформенным. Вы также можете использовать кросс-платформенные библиотеки, такие как STL, boost, Poco, Qt и т. Д.

Только когда вы начинаете использовать код, специфичный для платформы, вы теряете переносимость. Например, включение сделает ваш код компилируемым только в Windows. (Вокруг этого есть методы, такие как макрос #ifdef. Это позволяет использовать определенные части кода только на одной платформе.)

Таким образом, простая программа hello world должна работать на Linux, Mac, Windows или любой другой платформе. Для этого ничего особенного не нужно.

Примечание:
Некоторые могут упомянуть Cygwin или mingw32. Я вкратце объясню, что это такое:
Cygwin позволяет компилировать приложения Linux с помощью gcc / g ++ на машине Windows.
Mingw32 позволяет компилировать приложения Windows с помощью gcc / g ++ на компьютере с Windows.

Изменить:
Если вы хотите настроить систему для кросс-компиляции, я рекомендую вам взглянуть на cmake .

1
ответ дан 18 December 2019 в 14:47
поделиться

Да. В настоящее время мы компилируем приложение на 250 kloc, запускаем Qt с ежедневными сборками. Он работает безупречно каждый день, хотя должен признать, что он не распространяется за пределами компании, а используется только внутри компании. Для официальных выпусков предпочтительнее Visual Studio.

Скомпилировано с использованием стандартных пакетов mingw на Debian.

0
ответ дан 18 December 2019 в 14:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: