Компилятор C ++ в Oracle Virtual Box с гостевой системой XP на хосте Linux - PullRequest
1 голос
/ 14 февраля 2011

У меня установлена ​​Oracle Virtual Box с гостевой системой Windows XP на хосте Linux (Ubuntu). В будущем я собираюсь скомпилировать библиотеки C ++ DLL для программы на гостевой системе XP. У меня вопрос: нужно ли будет устанавливать компилятор IDE / C ++ в гостевой системе XP в Virtual Box, или я могу установить один (или использовать gcc ++) на хост Linux? Я бы предпочел не устанавливать гостевую систему XP в Virtual Box. Я думал, что, возможно, кросс-платформенный компилятор, такой как блоки Code:, можно использовать для компиляции в Linux, а полученную DLL поместить в общую папку, чтобы программа, для которой она была написана в гостевой системе XP, могла получить к ней доступ.

Ответы [ 2 ]

1 голос
/ 14 февраля 2011

Ваш дистрибутив Linux, вероятно, содержит mingw пакеты, которые содержат gcc / g ++ и др. И позволяют ему выступать в качестве кросс-компилятора для Windows. Короче говоря, вы можете создавать исполняемые файлы Windows (как EXE, так и DLL) из Linux для Windows.

Вам не обязательно нужна IDE (для Linux), чтобы достичь этого. Вы можете настроить IDE для использования кросс-компиляторов; Вы можете сделать это из скрипта конфигурации autoconf, и вы можете сделать это из своего собственного make-файла. Вам нужны правильные пути поиска include / library, а также правильный двоичный файл.

Где они расположены, отличается в зависимости от системы. Обычно компилятор находится в /usr/bin/triple-name, поэтому для меня мой фактический gcc называется x86_64-redhat-linux-gcc, а мой двоичный файл mingw, например, x86_64-pc-mingw32-gcc. Вам нужно будет использовать эти инструменты специально для Windows / кросс-компиляции, а не для встроенных настроек по умолчанию; вам также понадобится dlltool , который является инструментом для создания DLL.

1 голос
/ 14 февраля 2011

Это зависит от того, что это за программа для Windows: будет ли она построена на Visual C ++?Или он будет построен с GCC / Mingw32?Если он построен с использованием Visual C ++, то создание DLL для него с помощью gcc не будет работать (по причинам, таким как различное распределение имен между компиляторами, а также различные реализации стандартных библиотек в MS VC ++ Runtime и libstdc ++).

Если вы следуете инструкциям по выполнению кросс-компиляции для Windows в Linux через code :: blocks, как показано в этой ссылке ( ссылка на некоторые направления или , более общие инструкции на их форуме ), вы будете использовать mingw32, который использует gcc и libstdc ++.

...