4

Я скомпилировал программу на C++ под Linux:

make -f mymakefile

Это сгенерирует исполняемый файл a.out . Кажется, этот исполняемый файл не может быть запущен в командной строке Windows.

7 ответов7

93

Вы не можете запустить программу для Linux под Windows. Это совершенно разные операционные системы.

Тем не менее, есть способы, которые вы можете попробовать запустить программу:

  1. Перекомпилируйте программу в Windows, чтобы получить собственный исполняемый файл
  2. Установите подсистему Windows для Linux и запустите программу в этой среде
  3. Установите Linux на виртуальной машине и запустите программу в этой среде
  4. Установите Cygwin или MinGW, перекомпилируйте и запустите в этой среде
  5. Используйте кросс-компилятор

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

25

Вам нужна подсистема Linux для Windows (WSL) и дистрибутив Linux. В магазине Windows есть несколько дистрибутивов Linux, предварительно упакованных с WSL. Ubuntu довольно популярен, но, поскольку у вас уже есть система Linux, на которой вы a.out , может быть проще всего соответствовать этому.

Если вы не можете сопоставить дистрибутивы Linux, и a.out не работает как есть, также можно повторно запустить make в вашем дистрибутиве WSL

7

Ответ выше охватывал большинство аспектов, но не уверен, что натолкнулся на flinux (иногда называемый иностранным linux), который также был предложен здесь и может быть более легким обходным путем в зависимости от того, чего вы пытаетесь достичь.

(Обратите внимание, у меня есть WSL, я много работаю с эмуляторами и виртуальными машинами, и я не знаю других способов обхода :))

Foreign LINUX - это динамический бинарный транслятор и эмулятор интерфейса системных вызовов Linux для платформы Windows. Он способен запускать неизмененные двоичные файлы Linux в Windows без каких-либо драйверов или модификаций системы. Это обеспечивает еще один способ запуска приложений Linux под Windows в отличие от Cygwin и других инструментов. Теперь он запускает большое количество консольных приложений и некоторых приложений с графическим интерфейсом.

5

Вы можете кросс-компилировать для Windows на Linux.

См. Https://stackoverflow.com/questions/2033997/how-to-compile-for-windows-on-linux-with-gcc-g.

Это позволяет использовать Linux для компиляции двоичной исполняемой программы, которая работает под Windows.

2

Другой вариант, похожий на запуск виртуальной машины, но не совсем такой, - запуск приложения из контейнера Docker.

Да, Docker для Windows использует виртуальную машину в фоновом режиме (MobyLinuxVM на HyperV), но вы можете сделать что-то вроде этого:

$ docker run a.out

и остановит контейнер самостоятельно. Он также будет использовать меньше ресурсов, и выходные данные можно будет прочитать из собственных терминалов Windows, таких как cmd и PowerShell.

Dockerfile для этой ситуации будет выглядеть примерно так:

FROM docker pull ubuntu:latest

RUN make -f mymakefile

Я думаю, что лично это лучшее решение для запуска приложений Linux в Windows

0

Для этого конкретного случая я сам устанавливал gcc на мои windows 8 от mingw.

Затем я бы добавил путь к моей папке mingw в системный путь (из панели управления / системы / дополнительные настройки системы).

Затем я мог запустить gcc в моей командной строке, как Linux.

-7

Попробуйте получить Windows EXE или MSI эквивалент исполняемого файла Linux и запустите или используйте Cygwin для установки исполняемого файла Linux.

Существует инструмент mobaxterm, очень полезный, посмотрите, и вы можете выполнить свою задачу. Этот инструмент имеет Cygwin и другие утилиты Linux, чтобы продолжить.

Источник: https://www.quora.com/How-do-I-run-Linux-executable-on-windows

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .