Компиляция linux программ для windows
Я скачал mingw на Linux и скомпилировал обычный Hello, world! для Windows всё получилось!
Но мне нужно скомпилировать с библиотекой gtk+-3.0:
Вопрос, как мне подключить gtk+-3.0.
2 ответа 2
GTK3 для винды есть в репозиториях MSYS2. Сам MSYS2 не работает под Wine, но пакеты можно скачать и распаковать вручную (но придется вручную определять и ставить зависимости их тех же репозиториев - это долго).
На правах саморекламы: я сделал скрипты, которые автоматически качают пакеты из этих репозиториев вместе с нужными зависимостями, и заодно вписывают пути к ним в нужные переменные окружения.
Инструкции по использованию есть в readme.
Минимальный пример выглядит так:
Читаем readme, ставим необходимые программы. На данный момент нужны make , wget , tar , zstd .
Устанавливаем сами скрипты, и качаем ими пакеты.
Все устанавливается в текущую папку. Никакого мусора нигде не остается, эту папку потом можно просто стереть.
Теперь ставим нужные переменные окружения командой source env/vars.src .
Компилируем почти так же, но передаем в pkg-config флажок --define-prefix .
Результат работает под вайном.
Флажок нужен потому, что в .pc -файлах (из которых pkg-config берет флаги) этих пакетов пути написаны с расчетом на то, что пакеты стоят в /mingw64 , а у нас это не так. Этот флажок исправляет пути на настоящие.
Вместо этого флажка надежнее будет сделать /mingw64 ссылкой: (путь поменяйте на тот, куда клонировали репозиторий)
Но можно сделать еще лучше.
По крайней мере в репозиториях убунты x86_64-w64-mingw32-gcc - слегка старый, 9.x. А вот репозиториях MSYS2 есть новенький GCC, который прекрасно работает под Вайном, но работает медленно.
Есть отличный вариант: поставить MSYS2 GCC только ради библиотек, которые идут с ним в комплекте, а кросс-компилировать уже Clang-ом, с помощью этих библиотек. Любая сборка Clang-а (в отличие от GCC) умеет кросс-компилировать под любую поддерживаемую архитектуру, поэтому просто ставим обычный Clang для линукса.
Дальше ставим пакеты:
Теперь запускаем env/shell.sh , и если все сделано правильно, то кланг должен запускаться командами win-clang и win-clang++ , сразу со всеми флажками, нужными для кросс-компиляции.
Предупреждение: env/shell.sh кроме прочего настраивает ядро для прозрачного запуска экзешников через Wine (в консоли будут работать вещи типа ./foo.exe ). Эта настройка сохраняется до ребута.
Для этого скрипт спросит пароль для sudo . Если рандомным скриптам из интернета нет доверия, то можно отказаться вводить пароль (Ctrl+C), ввести ту же команду руками, потом набрать sudo -k - чтобы sudo забыл только что введенный пароль, чтобы скрипт ничего не выполнил с этим сохраненным паролем. А потом перезапустить скрипт.
Или, если эта фича не нужна вообще, можно вместо env/shell.sh использовать менее продвинутый source env/vars.src , как в первом примере. Расковыряйте файлы, почитайте readme, посмотрите что за что отвечает, и какие именно фичи вам нужны, а какие нет.
Оригинал: Basics Of Compiling Software From Source Code In Linux
Автор: LinuxAndUbuntu
Дата публикации: 16 мая 2018 года
Перевод: А. Кривошей
Дата перевода: июнь 2018 г.
Время от времени вам может понадобиться скомпилировать программу из исходного кода. Это включает компиляцию кода C или C++ во что-то, что мы можем запустить в Linux. В зависимости от программного обеспечения, которое вы хотите скомпилировать, часто делать это необязательно, так как ваш дистрибутив, скорее всего, уже будет иметь двоичный пакет программы в репозиториях программного обеспечения. Фактически, вы должны выбрать бинарные пакеты или компиляцию из исходного кода. Однако, если когда-либо вам нужно будет скомпилировать исходный код, это руководство даст вам некоторые основные знания данного процесса.
Типичный пример
Возьмем программу, написанную на C или C++. Загрузка исходного кода часто связана с загрузкой и распаковкой пакета или клонированием репозитория git. Типичным является выполнение этих трех команд:
Первая команда запускает скрипт configure, который анализирует библиотеки, установленные в вашей системе. Если требуемая для компиляции библиотека не установлена, он сообщит об этом, и вам нужно будет установить ее. Вам понадобится не только библиотека, но и файлы разработчика. Файлы с исходным кодом используют функции, имеющиеся в этих библиотеках.
После выполнения команды configure у вас должен быть создан файл Makefile. При запуске make, эта утилита будет читать Makefile в текущем каталоге и запустит компилятор (gcc для C или g ++ для C++) для компиляции программного обеспечения.
Третья команда не является строго необходимой, но рекомендуется для обеспечения общесистемного доступа к вашей программе, чтобы запускать исполняемый файл в терминале из любого места. Эта команда говорит «make» запустить инструкции по установке программы в систему.
Файлы INSTALL или README
Могут иметься дополнительные инструкции, которые должны быть выполнены до начала компиляции. Чтение этого файла (как правило, INSTALL) также поможет узнать, какие библиотеки разработчиков, возможно, потребуется установить в первую очередь. Такие пакеты будут содержать суффикс «-dev», чтобы показать, что они относятся к разработке и должны быть установлены для компиляции. Сценарий configure также может потребовать дополнительных параметров. README содержат любую другую информацию.
Вы даже можете обнаружить, что ни одна из трех команд не запускается. Вместо этого может использоваться другой вариант make, например qmake (для проектов Qt) или cmake.
Установка программы с GitHub
Начнем с установки текстового редактора wxMEdit, найденного на GitHub. Здесь я демонстрирую, как установить программу путем компиляции из исходного кода. Это типичный пример. Если вы посетите репозиторий GitHub, вы увидите, что файл readme содержит сведения о приложении. Никаких инструкций по компиляции нет, поэтому применяется стандартная последовательность с одной разницей: autogen.sh.
Сначала мы переходим в каталог, где хотим хранить репозиторий, и клонируем его:
Autogen.sh
Если вы найдете этот файл в исходном коде, вы должны запустить его перед “./configure”, так как он выполнит задачи, которые позволят вам успешно скомпилировать программное обеспечение. Если он отработал успешно, вы можете запустить “./configure”, “make”, а затем «sudo make install» и это все, что вам нужно запустить (в данном случае ничего больше).
В выводе make не должно быть ошибок.
Решение проблем
Если вы делаете это регулярно, вы должны столкнуться с определенными проблемами при компиляции из исходного кода.
Отсутствующие библиотеки
Помните, недостаточно установленных бинарных библиотек; также должны быть установлены исходные файлы или заголовки для разработчиков . Сценарий configure вместе с документацией обычно предупреждает вас о любых библиотеках (заголовках), которые необходимо установить для успешной компиляции. Убедитесь, что они установлены в вашей системе.
Заключение
Компиляция программного обеспечения может быть довольно простой или довольно болезненной. К счастью, многие дистрибутивы Linux предоставляют двоичные пакеты, готовые к установке, поэтому компиляция из исходного кода обычно не требуется. Лучше придерживаться бинарных пакетов, предоставляемых репозиториями, если они доступны.
Другие статьи о компиляции программ из исходного кода на нашем сайте:
Оригинал: How to Compile Linux Programs Under Windows with Cygwin
Автор: Gary Sims
Дата публикации: 12 июня 2014 г.
Перевод: Н.Ромоданов
Дата перевода: июль 2014 г.
Windows и Linux являются двумя очень разными системами и поэтому часто непросто портировать программы, написанные для одной из них на другую систему, особенно когда дело касается программ с графическим интерфейсом. Хотя есть много различных кросс-платформенных библиотек и пакетов SDK, нативные программы, написанные без учета портируемости, портировать довольно трудно.
Когда дело касается компиляции и запуска программ, написанных для Linux, в Windows, есть решение, известное как Cygwin. Проект Cygwin представляет собой набор наиболее распространенных инструментов и компиляторов (включая оболочки Bash и цепочку компиляторов GNU) для Windows. В его состав также входит библиотека, с помощью которой реализован слой совместимости, поэтому можно компилировать программы, в которых вызываются интерфейсы API, специфические для Linux. Cygwin не является эмулятором или виртуальной машиной, и он не позволяет двоичным файлам Linux работать на Windows без их предварительной перекомпиляции.
У проект Cygwin по всему миру есть сайты зеркал; выберите то, которое, как вы думаете, лучше соответствует вашему местоположению, и нажмите кнопку Next. Теперь вам следует выбрать, какие пакеты будут установлены. Для компиляции простых программ Linux в Windows, вам понадобится цепочка компиляторов GNU (GCC), среди который предлагается компилятор С и C++.
В поле поиска наберите "gcc", а затем нажмите на маленький символ плюс, который находится в списке пакетов рядом с "Devel". Найдите "gcc-core" и "gcc-g++" и для каждого из них нажмите "Skip" ("Пропустить"). Слово "Skip"превратится в номер версии, а обозначение "n/a" ("Отсутсвует") в колонке "Bin?" превратится в позицию, в которой можно поставить отметку. В поле поиска наберите "make" и найдите "make" в разделе "Devel". Нажмите "Skip" для того, чтобы пометить его для установки. Найдите "wget", а также пометьте его для установки из "Web". Чтобы собрать пример, приведенный ниже, нам также потребуется библиотека "libiconv;" найдите ее и пометьте для установки.
После того, как все пакеты будут загружены и установлены, выполните прежде, чем произойдет выход из терминала, последние шаги настройки. Запустите терминал Cygwin с тем, чтобы войти в Linux-среду разработки. В терминале вы не сможете использовать команды Windows, например, команду dir, и сможете пользоваться только командами командной оболочки, например, ls.
Для того, чтобы продемонстрировать, как скомпилировать программу Linux в Windows, мы будем использовать пакет HTML-XML от W3. Чтобы узнать, что он может делать, поморите статью Как работать с файлами HTML и XML из командной строки .
Скачайте исходные файлы с помощью команды wget:
Теперь распакуйте архивный файл:
Исходные файлы теперь находятся в каталоге html-xml-utils-6.7. Перейдите этот каталог:
Исходные файлы теперь находятся в каталоге html-xml-utils-6.7. Перейдите этот каталог:
Прежде, чем файлы будут собраны, вам нужно будет запустить скрипт configure для генерации файла Makefile (файл инструкций по сборке), который предназначен для данной среды сборки. Это обычный шаг сборки на Linux (и в Cygwin) для построения пакетов из исходных кодов.
После того, как операция configure будет завершена, вы можете начать сборку с помощью команды make:
Выполните следующую команду, указав в конце "-liconv":
После того, как файл hxindex.exe будет построен, можно переходить к остальной части сборки, набрав еще раз команду make. Когда работает команда make, она проверяет, что было собрано, а что — нет, а затем процесс сборки продолжается. Поскольку мы вручную собрали пакет hxindex.exe, команда make просто перенесет следующий двоичный файл в этот список.
Когда команда make завершить работу, у вас в каталоге html-xml-utils-6.7 будут все файлы .exe.
Если у вас при использовании Cygwin возникли проблемы, вы можете посмотреть часто задаваемые вопросы FAQ и документацию. Либо вы можете обратиться к спискам рассылки. Если у вас возникли проблемы с выполнением действий, описанных выше, то, пожалуйста, расскажите об этом в комментариях.
Большая часть разработчиков свободного софта работает на Linux или Mac, а вот поддержка Windows обычно реализована по остаточному принципу. Заработало — хорошо, не заработало — пускай портирует тот, кому это нужно. Я покажу, как создавать нативные исполняемые файлы для Windows, не имея этой системы под рукой.
В общем-то, даже в Microsoft уже признали проблему и сделали WSL (Windows Subsystem for Linux), чтобы запускать те приложения, у которых нативных версий под Windows нет. Однако если ты хочешь сделать свою программу доступной для широкой аудитории, то WSL вовсе не панацея, поскольку у среднего пользователя эта система вряд ли установлена и у нативных приложений возможностей для интеграции с Windows все равно больше.
Во многих случаях камень преткновения — не сам код программы, а система сборки. Если ты используешь кросс-платформенные библиотеки и не вызываешь специфичные функции POSIX, портирование может вообще не требоваться. Главное — собрать исполняемые файлы.
Сборка-то обычно и зависит от окружения POSIX. Если ты используешь GNU autotools, то скрипт ./configure у тебя на Bourne shell. CMake и ряд других систем сборки умеют генерировать скрипты под целевую ОС, но остается последняя «маленькая» проблема — нужна проприетарная и не бесплатная ОС. Есть вариант переложить задачу ее развертывания и лицензирования на кого-то другого и обратиться к сервису вроде Appveyor. Но можно вместо этого воспользоваться способностью GCC к кросс-компиляции и собирать программы на хосте с Linux (или macOS).
GNU и Windows
Для сборки программ с помощью GNU toolchain на Windows часто используют два проекта: Cygwin и MinGW + MSYS. У них схожие цели, но разные детали реализации. Давай разбираться.
Cygwin
Cygwin — самая полная реализация окружения GNU для Windows. Он предоставляет большую часть POSIX API в виде библиотеки, что позволяет собирать программы из UNIX без портирования, если только им не требуется семантика UNIX. Яркий пример — демоны, им нужен fork() и сигналы, которых нет в Windows, да и службы Windows устроены совсем иначе.
Кроме библиотеки, дистрибутив содержит набор классических команд UNIX и терминал. Реализации команд используют эту библиотеку и поддерживают некоторые возможности UNIX, такие как регистрозависимые имена файлов.
Целевой способ использования: если нет желания или возможности портировать программу на Windows или использовать только платформенно независимые API, ее можно собрать «под Cygwin», ценой зависимости от cygwin1.dll и относительной изоляции от всей остальной системы.
Многие люди ставили и продолжают ставить окружение Cygwin, чтобы иметь возможность использовать классические команды UNIX на Windows. Некоторые разработчики также включают Cygwin в инструкции для сборки своих программ под Windows, хотя сама программа не связывается с cygwin1.dll . Для этой цели может быть более правильно использовать MSYS.
MinGW и MSYS
Если цель Cygwin — сделать возможной сборку немодифицированных приложений на Windows ценой внешней зависимости, то цель MinGW + MSYS — производить приложения без внешних зависимостей.
MinGW и MSYS — это независимые пакеты, но их часто путают и смешивают друг с другом (а часто путают и с Cygwin). Можно сказать, что MinGW — это эквивалент GCC и binutils, а MSYS — расширенный эквивалент coreutils.
Начнем с MSYS. MSYS — это более «нативная» и легковесная альтернатива Cygwin. Этот пакет включает библиотеку с реализациями функций POSIX, но она предназначена для внутреннего пользования, и авторы категорически не рекомендуют связывать с ней свои приложения.
Библиотека MSYS не реализует UNIX поверх Windows, а следует соглашениям Windows — к примеру, сознательно не учитывает регистр букв в путях к файлам. Главная цель MSYS — предоставить нужные для скриптов сборки программы вроде Bourne shell, make и прочее, что обычно требуется для autotools.
MinGW содержит версии GCC и binutils (ассемблер as, компоновщик ld и так далее), которые производят исполняемые файлы для Windows в формате PE/COFF. Здесь мы и подходим к ключевому моменту: MinGW, как и все остальные части GNU toolchain, такой же платформенно независимый проект.
Кросс-компиляция в GNU toolchain уже давно обычное дело, и в GCC целевая платформа и хост независимы друг от друга. Можно запускать GCC на Linux для x86 и собирать программы для Linux на ARM, или наоборот. Совпадать не обязаны не только рабочая и целевая архитектуры процессора. Точно так же не обязаны совпадать даже ОС и формат исполняемого файла.
Ставим MinGW
Авторы многих дистрибутивов GNU/Linux уже постарались за нас, так что многие кросс-версии GCC, включая MinGW, можно поставить из репозиториев.
Например, в Fedora:
Если ты используешь macOS, то MinGW можно поставить из Homebrew: brew install mingw-w64 .
MinGW-w64, несмотря на название, поддерживает и Win32, и Win64. Это форк MinGW, который создали в первую очередь для реализации недостающей в оригинальном проекте поддержки Win64, отсюда и название.
В Fedora также присутствует ряд готовых кросс-версий популярных библиотек, например mingw32-qt .
Hello World
Для демонстрации соберем традиционный hello world. У кросс-версий GCC всегда есть префикс, для MinGW используются префиксы i686-w64-mingw32 и x86_64-w64-mingw32 .
Тестирование кросс-компилированных программ для других архитектур — непростая задача, но, поскольку наша целевая платформа — Windows на x86, мы легко можем протестировать их в Wine:
Продолжение доступно только участникам
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Никогда прежде корпорация Microsoft не обращала столь пристального внимания на Linux, как в последние полгода. Конкретно сборка Microsoft Windows 10 Build 14316 для разработчиков (developer release) совместно с Canonical (!) включает подсистему Linux. Это не эмулятор и не виртуальная машина, а полноценный терминал Linux, работающий внутри Windows 10!
Как это понимать?
30 марта 2016 года на конференции Build для разработчиков Microsoft объявила о начале поддержки командного интерпретатора bash в Windows 10. Дастин Киркленд (Dustin Kirkland) из команды разработчиков Ubuntu в своем блоге раскрыл некоторые подробности этого знакового события. Вкратце работа линуксовых приложений организуется без использования контейнеров виртуализации, отдельной пересборки утилит и даже без использования ядра Linux — родные исполняемые файлы Linux запускаются благодаря специальной прослойке, на лету транслирующей системные вызовы Linux в системные вызовы Windows. По сути, реализован обратный аналог системы Wine, получивший название Windows Subsystem for Linux (далее — WSL) и якобы практически не влияющий на производительность выполняемых приложений Linux.
Установка этого чуда — не самая тривиальная задача. Для начала нужно установить сборку Windows 10 14316 — экспериментальную версию Windows 10 для разработчиков и участников программы Windows Insider. Установить сборку можно, обновившись до нее из самой Windows. При этом нужно быть участником программы Windows Insider и не забыть включить в настройках «десятки» получение экспериментальных сборок. Также есть вариант скачать готовый ISO-образ c торрентов. Этот вариант на первый взгляд выглядит незаконным, однако это не так. Экспериментальные сборки Windows 10 распространяются бесплатно для всех (прямо как Linux!).
Летом Microsoft обещает выпустить большое обновление для Windows 10 всех версий, которое по умолчанию будет включать WSL. После установки Windows 10 Build 14316 необходимо установить специальный образ Ubuntu, доступный из Microsoft Store. Установив данный пакет, пользователь Windows 10 сможет через меню «Пуск» вызвать командную оболочку cmd.exe, запустить в ней bash и получить штатный интерфейс командной строки Ubuntu. Пользователю доступны apt, ssh, rsync, find, grep, awk, sed, sort, xargs, md5sum, gpg, curl, wget, apache, mysql, redis, python, perl, ruby, php, gcc, tar, vim, emacs, diff, patch и большинство бинарных пакетов из архива Ubuntu, содержащих консольные и серверные приложения. При этом некоторые приложения пока остаются неработоспособными, например из-за неполной эмуляции терминала VT100 невозможно использовать byobu , screen и tmux.
Приложения Ubuntu выполняются в отдельном представлении файловой системы, повторяющей организацию файловой иерархии в Linux. Файловые системы Windows доступны на запись в форме разделов, примонтированных в папке /mnt. Например, папка C:\Users\Kirkland\Downloads доступна как /mnt/c/Users/Kirkland/Downloads .
Для Windows-приложений корневая файловая система Ubuntu видна как C:\Users\Kirkland\AppData\Local\Lxss\rootfs\ . Для установки дополнительных пакетов и обновления системы применяется инструментарий apt с загрузкой штатных пакетов и обновлений из репозиториев Ubuntu. Код прослойки пока остается закрытым (имеется в виду именно код прослойки, а не код Ubuntu, конечно).
WSL создавалась как проект, независимый от конкретных дистрибутивов Linux. Ubuntu выбран для поставки в первой версии как наиболее популярный дистрибутив в среде разработчиков, и нет существенных технических причин (кроме полной и точной реализации системных вызовов), которые помешали бы поддержке пользовательских окружений других дистрибутивов в будущем, утверждают в Microsoft. Для WSL в ядре Windows была специально реализована поддержка fork() и некоторых других специфичных системных вызовов POSIX и Linux, что позволило добиться реализации более эффективной, чем при использовании эмуляции. Также в WSL удалось полностью избавиться от использования ядра Linux: по сути, пользовательское окружение Ubuntu работает поверх ядра Windows, так же как в Nexenta OS пользовательское окружение Ubuntu работает поверх ядра OpenSolaris.
WSL не базируются на ранее доступной подсистеме POSIX (SUA), которая в NT 3.5.1 содержала лишь минимальный набор системных вызовов и позднее была заменена на систему Services for UNIX (SFU), основанную на наработках Interix. WSL является полностью новой реализацией, не требующей перекомпиляции программ или сборки специальных дистрибутивов. В WSL подготовлена новая инфраструктура ядра Windows, которая предоставляет слой совместимости с Linux syscall API и специальный загрузчик, что позволяет напрямую запускать уже поставляемые в Ubuntu немодифицированные исполняемые файлы, так же как запускаются обычные программы для Windows. По сути, речь идет о новом поколении интеграции различных ОС друг с другом.
Поддержка графических приложений не планируется. Система может запускать серверные приложения, но рассчитана скорее на их тестирование, чем на развертывание замены Linux-серверов для промышленного применения. Проект нацелен только на предоставление инструментария командной строки для разработчиков.
Ubuntu Bash в Windows 10 во всей красе
Другие статьи в выпуске:
Немного об установке
Автор статьи устанавливал WSL в несколько этапов: вначале установленная на его ноутбуке Dell Inspiron «семерка» была обновлена до Windows 10. Это заняло около семи часов (не считая времени на загрузку образа с сервера Microsoft). После чего начался увлекательный процесс установки последней тестовой сборки Windows 10 Build 14316.
Дело в том, что автор никогда не был бета-тестером Windows 10 и из-за этого не мог участвовать в программе Windows Insider. Недолго думая, зарегистрировавшись на сайте для бета-тестеров, он попробовал обновиться. Не тут-то было! Система просто не видела того, что он участвует в тестировании. К тому же ни одно обновление Windows 10 не устанавливалось. После целого дня мучений было принято решение скачать и установить образ тестовой версии «десятки» с нуля. Но и тут ждал неприятный сюрприз: корпорация Microsoft распространяет образы своих экспериментальных сборок в виде не обычных ISO-файлов, а файлов нового формата, созданного самой же Microsoft, — ESD (Electronic Software Distribution). Название говорит само за себя. После скачивания файлов данного типа их необходимо конвертировать в более привычный формат ISO. Для этого Microsoft выпустила специальную утилиту, которая называется ESD Decrypter. Подробнее об этом интересном процессе можешь почитать тут.
Спустя два часа после начала конвертирования ESD-файла ISO-образ был успешно создан и записан с помощью утилиты WinSetupFromUSB на флешку. Установка прошла без проблем, и наконец у автора была Windows 10 Build 14316.
Если хочешь, чтобы WSL заработал, необходимо установить английский языковой пакет для системы, а также выбрать английский в качестве языка по умолчанию. Иначе WSL установится, но не запустится!
Скачивание Ubuntu из Windows Store
Далее активируешь доступную для участников Windows Insider функцию установки расширенных обновлений System Settings → Advanced Windows Update .
Включение Windows Insider
Переводишь систему на максимальный уровень оперативности доставки новых обновлений (the fast ring), переместив ползунок в крайне правое положение.
Нам нужна только свежатинка!
Включаешь режим разработчика (developer mode).
Теперь мы разработчики
Инициируешь проверку наличия обновлений, устанавливаешь все доступные обновления и перезагружаешь систему.
Установка обновлений займет много времени
После перезагрузки включаешь опцию Windows Subsystem for Linux (Beta) . Для этого на панели задач Windows нажимаешь кнопку поиска и вводишь windows features .
Linux в Windows — это не баг, это фича
Второй раз перезагружаешь систему. В меню Stаrt набираешь bash , выполняешь bash.exe , соглашаешься с правилами использования сервиса, ждешь окончания загрузки компонентов Ubuntu и получаешь традиционное приглашение командной строки Ubuntu с большинством основных утилит.
Linux в Windows — это не баг, это фича Linux в Windows — это не баг, это фича Linux в Windows — это не баг, это фича
Для использования традиционного для Ubuntu шрифта в консоли загружаешь шрифт с
сайта, извлекаешь из zip-архива UbuntuMono-R.ttf и устанавливаешь его через двойной клик в проводнике. Далее меняешь настройки в реестре, установив параметр
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Console\TrueTypeFont в значение Ubuntu Mono . В настройках консоли выбираем шрифт Ubuntu .
Шрифт Ubuntu выглядит более привычным и красивым, чем Lucidia Console
P. S. Проделав все описанное, можешь вернуть русский язык как основной в системе.
Как это работает?
Спойлер: пока не очень хорошо и тормозит.
Как уже говорилось ранее, для запуска WSL после установки необходимо запустить консоль Windows — cmd , набрать bash , и перед тобой откроется привычный терминал Linux. Однако автор этой статьи заметил, что скорость работы приложений Linux несколько ниже, чем приложений Windows. Из пользовательских программ установились и запустились Midnight Commander, Finch (форк Pidgin, использующий в работе библиотеку ncurses), top и htop. Уровень торможения рос прямо пропорционально сложности приложения. Можно с уверенностью сказать, что WSL пока не готов для повседневного использования даже разработчиками. Это, скорее, экспериментальное нечто, позволяющее опробовать возможности bash в Windows. К тому же после нескольких дней активного использования WSL приказала долго жить — попросту не запускалась или начинала дико тормозить всю систему.
WARNING
Решение было найдено в интернете. Чтобы переустановить/сбросить/удалить WSL, нужно в терминале Windows (cmd) ввести всего две команды:
Удаление и дальнейшая переустановка занимают около получаса
Автору было интересно, насколько быстро и корректно проходят всевозможные линуксовые тесты.
Проверка на вшивость
Итак, тесты. Большинство тестов, использованных автором, были взяты с сайта Arch Linux.
Первым бенчмарком, призванным проверить скорость работы WSL, должен был стать interbench, но он не установился, поскольку его нет в репозиториях Ubuntu. Поэтому таковым стала HardInfo — утилита, показывающая всю исчерпывающую информацию об аппаратной составляющей ПК. В целом тест проходит нормально, без проблем. Но очень медленно.
HardInfo в деле
Вторым планировался UnixBench. Однако и он не пошел. Выдал ошибку. Остальные бенчмарки также благополучно не запустились.
Так выглядит Finch для Windows
Следующим был протестирован бессмертный Midnight Commander. Этот представитель линуксовых консольных приложений, тоже созданный на основе библиотеки ncurses, установился также без проблем. И работал. Но очень, очень, очень медленно. Операции копирования-перемещения выполнялись по полчаса на файл размером 200 Мбайт (видео). Интерфейс был жутко неотзывчивым. Хочется верить, что это всего лишь баги тестовой версии и к полноценному релизу все будет исправлено.
Старый добрый Midnight Commander
Остальные утилиты работали более-менее сносно. А благодаря хорошему фидбэку Microsoft поиск и устранение багов идет гораздо быстрее, чем раньше. Почти все штатные утилиты Linux, вроде time или cal, работают исправно, но тоже с еле заметным торможением. Все же это не полноценная среда Linux. Было бы неплохо увидеть поддержку графики, но этого, к сожалению, не планируется.
Что было до Windows Subsystem for Linux?
Были попытки внедрить прослойку Linux в среду Windows — с переменным успехом на протяжении уже 21 года. Самая знаменитая, безусловно, Cygwin — UNIX-подобная среда и интерфейс командной строки для Microsoft Windows. Cygwin обеспечивает тесную интеграцию приложений, данных и ресурсов Windows с приложениями, данными и ресурсами UNIX-подобной среды. Из среды Cygwin можно запускать обычные приложения Linux, также можно использовать инструменты Cygwin из Windows. Однако в отличие от WSL это, скорее, все же эмуляция или даже песочница для кода. А не прослойка, транслирующая системные вызовы Windows и Linux.
Изначально Cygwin разрабатывала компания Cygnus Solutions, которую позднее приобрела Red Hat. Это свободное ПО, опубликованное под GNU General Public License версии 2. В настоящее время Cygwin разрабатывается сотрудниками Red Hat, NetApp и множеством добровольцев. Подобные функциональные возможности предлагала также и Microsoft в своем пакете Services for UNIX, включающем в себя подсистему Interix, и Subsystem for UNIX-based Applications (в более новых версиях).
Cygwin представляет собой инструмент для портирования ПО UNIX в Windows и библиотеку, которая реализует интерфейс прикладного программирования POSIX на основе системных вызовов Win32. Кроме того, Cygwin включает в себя инструменты разработки GNU для выполнения основных задач программирования, а также и некоторые прикладные программы, эквивалентные базовым программам UNIX. В 2001 году в Cygwin был включен пакет X Window System. Кроме того, Cygwin содержит библиотеку MinGW, позволяющую работать с библиотекой Microsoft MSVCRT (Windows API); библиотека MinGW менее требовательна к объему оперативной и дисковой памяти, распространяется под более свободной лицензией и может работать с любым программным обеспечением, но функциональные возможности спецификации POSIX реализованы в ней не так полно, как в Cygwin.
Работа над проектом Cygwin была начата в 1995 году Стивом Чемберленом (Steve Chamberlain), программистом Cygnus, заметившим, что Windows NT и Windows 95 используют в качестве формата объектных файлов формат COFF. К тому времени в GNU уже была реализована поддержка архитектуры x86, COFF, а также библиотека языка C newlib; таким образом, по крайней мере теоретически, не представляло затруднений получить из GCC кросс-компилятор, который бы создавал исполняемые файлы Windows. Это оказалось несложным и на практике. Вскоре появился прототип.
Следующий шаг — заставить компилятор работать в Windows, но для этого была необходима эмуляция многих функций UNIX: к примеру, должен работать скрипт GNU configure. Этот скрипт нуждается в оболочке типа bash, которая, в свою очередь, требует наличия стандартных потоков ввода-вывода и системного вызова fork. Windows располагает подобными функциональными возможностями, и библиотека Cygwin лишь транслирует вызовы, исходящие от программ, управляя определенными видами данных, такими как файловые дескрипторы.
В 1996 году к проекту Cygwin присоединились и другие программисты, так как стало очевидным, что Cygwin сделает возможным использование инструментов Cygnus на системах с Windows (до этого намечалось использовать DJGPP). Этот вариант был особенно привлекательным, ведь кросс-компиляция могла бы производиться в трех направлениях: можно было использовать мощную станцию Sun для сборки Windows-кросс-компилятора MIPS, что позволяло значительно экономить время. С 1998 года Cygnus предлагает пакет Cygwin в качестве самостоятельного продукта.
Стоит заметить, что наработки Cygwin были бы весьма полезны разработчикам WSL. К примеру, для включения поддержки графического режима.
Через неделю мучений и экспериментов автор статьи получил наполовину работоспособное окружение Linux прямо поверх Windows 10. Что тут можно сказать? Идея очень даже хорошая. Простому смертному пользователю оно, может быть, и ни к чему, а вот разработчики, при условии, что задумка будет доведена до ума, действительно смогут получить новый мощный инструмент для работы. Ждем с нетерпением, когда выйдет первый релиз Microsoft GNU/Linux.
Читайте также: