Я скомпилировал программу на C++ под Linux:
make -f mymakefile
Это сгенерирует исполняемый файл a.out
. Кажется, этот исполняемый файл не может быть запущен в командной строке Windows.
Вы не можете запустить программу для Linux под Windows. Это совершенно разные операционные системы.
Тем не менее, есть способы, которые вы можете попробовать запустить программу:
Конечно, в зависимости от характера программы и ее зависимостей, запуск в другой среде может быть невозможен без дополнительного программного обеспечения, изменений в исходном коде или вообще без него.
Вам нужна подсистема Linux для Windows (WSL) и дистрибутив Linux. В магазине Windows есть несколько дистрибутивов Linux, предварительно упакованных с WSL. Ubuntu довольно популярен, но, поскольку у вас уже есть система Linux, на которой вы a.out
, может быть проще всего соответствовать этому.
Если вы не можете сопоставить дистрибутивы Linux, и a.out
не работает как есть, также можно повторно запустить make
в вашем дистрибутиве WSL
Ответ выше охватывал большинство аспектов, но не уверен, что натолкнулся на flinux (иногда называемый иностранным linux), который также был предложен здесь и может быть более легким обходным путем в зависимости от того, чего вы пытаетесь достичь.
(Обратите внимание, у меня есть WSL, я много работаю с эмуляторами и виртуальными машинами, и я не знаю других способов обхода :))
Foreign LINUX - это динамический бинарный транслятор и эмулятор интерфейса системных вызовов Linux для платформы Windows. Он способен запускать неизмененные двоичные файлы Linux в Windows без каких-либо драйверов или модификаций системы. Это обеспечивает еще один способ запуска приложений Linux под Windows в отличие от Cygwin и других инструментов. Теперь он запускает большое количество консольных приложений и некоторых приложений с графическим интерфейсом.
Вы можете кросс-компилировать для Windows на Linux.
См. Https://stackoverflow.com/questions/2033997/how-to-compile-for-windows-on-linux-with-gcc-g.
Это позволяет использовать Linux для компиляции двоичной исполняемой программы, которая работает под Windows.
Другой вариант, похожий на запуск виртуальной машины, но не совсем такой, - запуск приложения из контейнера Docker.
Да, Docker для Windows использует виртуальную машину в фоновом режиме (MobyLinuxVM на HyperV), но вы можете сделать что-то вроде этого:
$ docker run a.out
и остановит контейнер самостоятельно. Он также будет использовать меньше ресурсов, и выходные данные можно будет прочитать из собственных терминалов Windows, таких как cmd и PowerShell.
Dockerfile для этой ситуации будет выглядеть примерно так:
FROM docker pull ubuntu:latest
RUN make -f mymakefile
Я думаю, что лично это лучшее решение для запуска приложений Linux в Windows
Для этого конкретного случая я сам устанавливал gcc на мои windows 8 от mingw.
Затем я бы добавил путь к моей папке mingw в системный путь (из панели управления / системы / дополнительные настройки системы).
Затем я мог запустить gcc в моей командной строке, как Linux.
Попробуйте получить Windows EXE или MSI эквивалент исполняемого файла Linux и запустите или используйте Cygwin для установки исполняемого файла Linux.
Существует инструмент mobaxterm, очень полезный, посмотрите, и вы можете выполнить свою задачу. Этот инструмент имеет Cygwin и другие утилиты Linux, чтобы продолжить.
Источник: https://www.quora.com/How-do-I-run-Linux-executable-on-windows