Под Windows 10 можно поднять нативную Ubuntu консоль (версии аж 18.04). Под неё app-get ставит сразу gcc-7.3.0.
Самый быстрый способ получить C++17 под виндой.
Установив пакет xorg-dev вы можете писать и запускать X-Windows приложения под WSL.
Нужно только запустить XServer под Windows (например, VcXSrv) и добавить в bash.rc строчку
Здравствуйте, Шахтер, Вы писали:
Ш>Под Windows 10 можно поднять нативную Ubuntu консоль (версии аж 18.04). Под неё app-get ставит сразу gcc-7.3.0. Ш>Самый быстрый способ получить C++17 под виндой.
Уточнение — поднять Ubuntu в виртуалке? Я верно понимаю?
Что-то для этого нужно, кроме имеющегося уже у меня *.iso образа:
ubuntu-18.04-desktop-amd64.iso ?
Какая-то дополнительная утилита для Windows 10 — чтобы смонтировать эту Ubuntu 18.04?
P.S. Насчёт самого быстрого способа — получить C++17 под виндой: MSVC-2017 CE — в настройках C/C++ -> CommandLine -> AdditionalOptions запишем: /std:c++17
P.P.S. Мне интересно именно опробовать C++17 под Linux
Здравствуйте, Шахтер, Вы писали:
Ш>Под Windows 10 можно поднять нативную Ubuntu консоль (версии аж 18.04). Под неё app-get ставит сразу gcc-7.3.0. Ш>Самый быстрый способ получить C++17 под виндой.
А еще есть сборки от MinGW-w64 (тынц) и NuWen MinGW, который сразу с Boost-ом в придачу (тынц). И работать будет прямо в Window-ом Command Propmt-е.
Ш>>Под Windows 10 можно поднять нативную Ubuntu консоль (версии аж 18.04). Под неё app-get ставит сразу gcc-7.3.0. Ш>>Самый быстрый способ получить C++17 под виндой. AG>Уточнение — поднять Ubuntu в виртуалке? Я верно понимаю?
Нет.
Это реализация системных вызовов линукса в ядре Win10.
Подсистема Ubuntu появилась и в Windows Server 2016...
AG>Что-то для этого нужно, кроме имеющегося уже у меня *.iso образа: AG>ubuntu-18.04-desktop-amd64.iso ?
ubuntu-18.04-desktop-amd64.iso — не пойдет — он тащит линуксовое ядро, ФС и пр.
В десятке нужные пакеты устанавливаются при помощи заклинания
sudo app-get install
Правда GUI проги поставить не просто (не пробовал, но читал).
AG>P.P.S. Мне интересно именно опробовать C++17 под Linux
Новый gcc неверняка есть и в Win версии (cygwin и/или mingw).
Здравствуйте, AlexGin, Вы писали:
Ш>>Под Windows 10 можно поднять нативную Ubuntu консоль (версии аж 18.04). Под неё app-get ставит сразу gcc-7.3.0. Ш>>Самый быстрый способ получить C++17 под виндой.
AG>Уточнение — поднять Ubuntu в виртуалке? Я верно понимаю?
У 10-й венды теперь убунта входит прям в состав виндовс, и хорошо с ним интегрированна.
Подробностей не знаю, а не пользователь венды от слова совсем, у меня линух прям на голом железе работает
Здравствуйте, Шахтер, Вы писали:
Ш>Под Windows 10 можно поднять нативную Ubuntu консоль (версии аж 18.04). Под неё app-get ставит сразу gcc-7.3.0. Ш>Самый быстрый способ получить C++17 под виндой.
Но я так понимаю, программы, скомпилированные этим gcc, только в линухе и можно запускать, пусть и встроенном в венду.
P.S. Про убунту не знаю, а в федоре вполне работоспособный кросс-mingw является частью дистрибутива, и позволяет компилировать программы под венду прямо из линуха. И к нему куча всяких полезных предсобранных библиотек прилагается. У меня сейчас не самая свежая федора (все руки не доходят проапгрейдиться), но gcc в этом кросс-mingw имеет версию 7.2.0. Наверное, в самой свежей федоре и gcc поновее. Полагаю, что для убунты тоже есть подобные удобства.
Здравствуйте, Pzz, Вы писали:
Pzz>Но я так понимаю, программы, скомпилированные этим gcc, только в линухе и можно запускать, пусть и встроенном в венду.
Нет. Есть понятие host platform, а есть target platform. Всякие прошивки для модемов не на модемах же собирают.
И Windows может быть target platform. Вот хорошая инструкция.
Здравствуйте, AlexGin, Вы писали:
Ш>>Под Windows 10 можно поднять нативную Ubuntu консоль (версии аж 18.04). Под неё app-get ставит сразу gcc-7.3.0. Ш>>Самый быстрый способ получить C++17 под виндой.
AG>Уточнение — поднять Ubuntu в виртуалке? Я верно понимаю?
1) Turn on Developer Mode
Open Settings -> Update and Security -> For developers
Select the Developer Mode radio button
2) Open a command prompt. Run bash
Здравствуйте, Блудов Павел, Вы писали:
Pzz>>Но я так понимаю, программы, скомпилированные этим gcc, только в линухе и можно запускать, пусть и встроенном в венду.
БП>Нет. Есть понятие host platform, а есть target platform. Всякие прошивки для модемов не на модемах же собирают. БП>И Windows может быть target platform. Вот хорошая инструкция.
Это я понимаю. Но на федоре, например, кросс-gcc — это отдельный набор пакетов. И версия gcc там в среднем не совпадает с gcc для хоста. Как в этом плане налажена жизнь в убунте, я не в курсе, но обычно довольно похоже.
Здравствуйте, Pzz, Вы писали:
Pzz>Но я так понимаю, программы, скомпилированные этим gcc, только в линухе и можно запускать, пусть и встроенном в венду.
Ты путаешь с костыльным MinGW. В WSL весь буханочный юзермод работает AS IS, неотличимо от родной буханочной среды.
Здравствуйте, Дрободан Фрилич, Вы писали:
ДФ>Подсистема Ubuntu появилась и в Windows Server 2016...
Релизный Windows 2016 (1607) это LTSC, в нём WSL нет и неизвестно когда появится. Переношу руками из 10ки.
Обещали добавить в экспериментально version 1709 (Semi-Annual Channel). Но он вроде бы только в Server Core редакции, без Desktop Experience.
Версии 1607 — 1709 друг на друга не обновляются, только чистая установка.
Так что в сервере WSL'я можно сказать что нету.
ДФ>Правда GUI проги поставить не просто (не пробовал, но читал).
Ничего сложного. X-Server поднимаешь на винде нативно, и прописываешь его адрес. Аналогично аудио.
Здравствуйте, IID, Вы писали:
Pzz>>Но я так понимаю, программы, скомпилированные этим gcc, только в линухе и можно запускать, пусть и встроенном в венду.
IID>Ты путаешь с костыльным MinGW. В WSL весь буханочный юзермод работает AS IS, неотличимо от родной буханочной среды.
Ничего я не путаю. А вот ты путаешь MinGW с Cygwin
Здравствуйте, Pzz, Вы писали:
Pzz>>>программы, скомпилированные этим gcc, только в линухе и можно запускать, пусть и встроенном в венду.
IID>>Ты путаешь с костыльным
Pzz>Ничего я не путаю.
Тогда поясни, почему выделенное.
Pzz>НА вот ты путаешь MinGW с Cygwin
Это чистый юзермод. На уровне юзермода нормально не реализовать юниксовые особенности. Типа форка (хотя он доступен на уровне Native API), работы с анлинкнутыми файлами, удаление запущенного образа, человеческое хранение доп. юниксовых атрибутов и запрещённых на NTFS символов. В WSL серъёзная поддержка на уровне ядра ОС, даже специальный тип процессов сделали — PicoProcess.
Здравствуйте, IID, Вы писали:
IID>На уровне юзермода нормально не реализовать юниксовые особенности. Типа форка (хотя он доступен на уровне Native API), работы с анлинкнутыми файлами, удаление запущенного образа, человеческое хранение доп. юниксовых атрибутов и запрещённых на NTFS символов. В WSL серъёзная поддержка на уровне ядра ОС, даже специальный тип процессов сделали — PicoProcess.
Какое отношение это все имеет к возможности работы с C++17 в gcc под Windows?
Здравствуйте, IID, Вы писали:
IID>Тогда поясни, почему выделенное.
Венда со встроенной убунтой поддерживает теперь два формата исполняемых файлов: родной вендовый EXE, и родной линуксный ELF. Так вот, я хотел сказать, что gcc, который там внутри убунты, выдает на выходе ELF, а не EXE. И я полагаю, что если ты профессионально пишешь коробочный софтварий под венду, то тебе это не подходит, тебе нужен вендовый EXE, обернутый в вендовый инсталлятор.
Я, кстати, не верю, что в этой конструкции, как кто-то высказался "вендовое ядро исполняет системные запросы линуха". Полагаю, что они запустили настоящее линуксное ядро, или в виртуалке, или в режиме user mode linux, и аккуратно протоптали в user space необходимые дорожки между двумя мирами, чтобы запущенная таким образом линуксная программа смотрелась более-менее, как родная.
Pzz>>НА вот ты путаешь MinGW с Cygwin
IID>оба-два говно.
Нет. MinGW, в первую очередь — это gcc, выдающий вендовые EXE на выходе. В режиме кросс-компилятора (из линуха в венду) он очень даже удобен и неплох.
А что к нему прилагается какой-то минимальный псевдо-юниксный набор шеловских команд, то это не чтобы почувствовать себя в венде, как в линухе, а чтобы юниксовские makefile и сборочные скрипты худо-бедно под вендой запускались.
Pzz>>программы, скомпилированные этим gcc, только в линухе и можно запускать, пусть и встроенном в венду.
Pzz>Венда со встроенной убунтой поддерживает теперь два формата исполняемых файлов: родной вендовый EXE, и родной линуксный ELF. Так вот, я хотел сказать, что gcc, который там внутри убунты, выдает на выходе ELF, а не EXE. И я полагаю, что если ты профессионально пишешь коробочный софтварий под венду, то тебе это не подходит, тебе нужен вендовый EXE, обернутый в вендовый инсталлятор.
А я хотел уточнить что скомпилированные ELF будут работать в любом линуксе, не только встроенном в винду.
Pzz>Я, кстати, не верю, что в этой конструкции, как кто-то высказался "вендовое ядро исполняет системные запросы линуха". Полагаю, что они запустили настоящее линуксное ядро, или в виртуалке, или в режиме user mode linux, и аккуратно протоптали в user space необходимые дорожки между двумя мирами, чтобы запущенная таким образом линуксная программа смотрелась более-менее, как родная.
Нет, никакого ядра линукса в Win, разумеется, нет. Есть разница в семантике системных вызовов, но суть их в любой ОС очень похожа. Объекты синхронизации, работа с памятью, файловый ввод-вывод и т.д. Линуксовые юзермодные сисколлы транслируются внутри WSL в вызовы сервисов NT ядра. Я лично переносил WSL из 10ки в 2016 сервер, где его нет. Весь WSL это 1 драйвер и 1 сервис.