Приложение для кросс-компиляции, созданное с помощью MS Visual studio 2010 - PullRequest
0 голосов
/ 29 декабря 2010

Я написал код, в основном для окон, использующих VC ++ со средой разработки MS Visual Studio 2010.

Примечание: это консольное приложение и не содержит GUI . Поэтому я хотел бы кросс-компилировать.

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

Ответы [ 2 ]

0 голосов
/ 29 декабря 2010

Хотя вы можете, я уверен, выкопать версию GCC с перекрестной компиляцией для Linux, предназначенную для Linux, для запуска под Windows (или собрать ее из исходников, используя версию GCC, предназначенную для платформы Windows, например MINGW или Cygwin), но можетоказалось проще установить меньший дистрибутив linux, возможно, только для консоли, на виртуальной машине.

Как вы упоминали, вы выполняли ввод-вывод с использованием WIN32 API.Вам нужно будет изменить это на методы типа unix / posix, возможно, включая обучение по изменению настроек терминала, что может быть небольшим опытом обучения.Чтобы знать, что вы правильно поняли, вам нужно будет проверить это.Сборка "linux" -версии вашего кода под cygwin и запуск его на вашем Windows-окне может сработать, но, вероятно, лучше познакомиться с действительной целевой операционной системой.

Просто убедитесь, что ваш исполняемый файл Windows работает подВино, о котором упоминала Дани, тоже не будет плохой идеей.Также есть библиотека Winelib, которая призвана помочь с портированием, предоставляя заменители вызовов Windows при попытке скомпилировать ваш код для linux.

Наконец, просто переключите компиляторы с MSVC на GCC, независимо от того, нацелены ли вы на linuxили Windows или Cygwin, вероятно, потребует некоторых изменений в вашем исходном коде.MSVC будет допускать множество хитрых вещей, которые GCC не допустит, например, в том, как вы объявляете структуры.Обратное, вероятно, также верно.Но, изучив и регулярно передавая ваш проект обоим компиляторам, вы можете поддерживать переносимый код.

0 голосов
/ 29 декабря 2010

Просто убедитесь, что вы используете ANSI-версию c ++ (без персонала clr и т. Д.), И она также должна компилироваться на linux.

Возможно, вы захотите найти инструмент, который преобразует csproj в make-файлы, или напишите их самостоятельно.

...