- Создать в Windows приложение для Linux
- Windows Subsystem for Linux, или как разрабатывать приложения на Windows без боли
- Разработка Linux программ из Windows
- Можно ли писать приложения под Windows, на Linux?
- Visual C++ for Linux Development: Практика использования для Windows разработчиков
- Отладка первой программы
- Подключаемые файлы
- Дополнительные команды компилятора и линкера
- Запуск отладки с правами администратора
- Копирование дополнительных файлов
- Что в итоге
Создать в Windows приложение для Linux
Всем доброго времени суток! Подскажите, пожалуйста, как в среде разработки Lazarus, установленной в Windows, собрать приложение под Linux. Вот что делаю я: В параметрах компилятора выбираю: Библиотека виджетов LCL = gtk2 В ветке Генерация кода выбираю: Операционная система = Linux Целевое семейство процессоров = i386 При нажатии ОК Ошибка: «Проект использует целевую ОС linux и процессор i386. System.ppu для этой цели не был найден в каталогах двоичных файлов FPC. Убедитесь в том что FPC установлен корректно для данной цели, и что в файл fpc.cfg вписаны верные каталоги.»
Вроде бы всё понятно написано, но что делать с этим System.ppu, где его брать и куда ложить?
Подскажите, пожалуйста, кто сможет.
Нужны дополнительные бибблиотеки для freepascal
Виртуальная машина заметно упрощает процесс кросскомпиляции.
Лазарусу, очевидно, нужны модули, собранные для линукса. Скачать можно с сайта лазаруса, покласть куда удобно, написать лазарусу искать там. Из общих соображений, должно работать.
Как я понимаю, в папках bin и units помимо папки i386-win32 должна быть ещё папка i386-linux (или что-то в этом роде). Но как этого достичь?
этож сложно очень, ставить виртуалбокс, качать убунту (или другой какой дистр), устанавливать его целых 10-15 минут. зачем такое красноглазие. ))
Axel Уже ответил на ваш вопрос
Не мучайтесь, просто поставьте VirtualBox.
Настоящие красноглазие сидеть и ждать когда win$ под vbox поставится
1. Пишешь код в лазарусе, но не используй всяких специфических винапи функций.
2. Ставишь в виртуальную машину линукс.
3. В него ставишь лазарус.
4. Открываешь код, собираешь.
5. Профит.
ИМХО самый очевидный способ.
Способ хороший, но пока нет возможности выкачать лазарус под линукс, трафик сильно ограничен. Хотелось бы знать, есть ли какой-нибудь «легенький» пакет, который можно было бы доустановить в лазарусе под виндой, чтобы можно было компилить прилож под линукс?
Как установить VirtualBox, и как мне это поможет?
Он весит ИМХО метров 10. Трафика сильно не потеряешь.
Хотелось бы знать, есть ли какой-нибудь «легенький» пакет, который можно было бы доустановить в лазарусе под виндой, чтобы можно было компилить прилож под линукс?
Вот как бы тебе объяснить.. Есть у тебя живая рыбка. Живет она в воде. На воздухе жить не хочет, дохнет и все тут. А тебе надо заставить жить ее на воздухе. Есть ли какой простой «легонький» способ, чтобы заставить рыбку не дохнуть на воздухе? Или все же придется генно модифицировать ее?
>Как установить VirtualBox
Скачать с сайта и поставить, не? У тебя ж винда, там просто все =) *ехидно лыбится*
Windows Subsystem for Linux, или как разрабатывать приложения на Windows без боли
Как настроить полноценное окружение разработчика, привыкшего к Linux и Mac OS X.
Традиционно считается, что разработчики (в особенности связанные с бэкенд-разработкой) предпочитают использовать unix-like-системы. Причиной тому было немало. Ситуация начала несколько меняться в 2017 году — именно тогда вышел первый стабильный релиз Windows Subsystem for Linux (также известен под более ранним названием BashOnWindows), который дал разработчикам то, чего они так давно ждали, — полноценный Linux в качестве приложения в Windows!
Но не всё оказалось так просто — лишь к концу 2018 года WSL стало возможно использовать полноценно, при этом способ отнюдь не очевиден. О нём и пойдёт речь.
Для начала пара слов о том, что такое вообще Windows Subsystem for Linux, он же WSL в сокращённом варианте. Это прослойка между ядром Windows и приложениями для Linux, которая позволяет преобразовывать системные вызовы к ядру Linux в вызовы к ядру Windows. Благодаря тому, что виртуализация практически отсутствует, такое решение работает быстрее традиционной виртуализации, где эмулируется целый компьютер, как это происходит в Oracle VirtualBox и VMWare Player.
Кроме того, WSL включает в себя целый ряд утилит для интеграции с Windows — пути в файловой системе автоматически преобразовываются в нужный формат, из-под Linux можно запускать приложения в Windows (но не наоборот!), Linux в WSL имеет доступ ко всем портам и сервисам в Windows.
Для разработчика основное применение WSL сразу же видится в развёртывании среды разработки именно там. Всё же установка многих языков, компиляторов и интерпретаторов, утилит происходит в Linux куда проще — часто одной командой из репозитория. Да и привычная консоль под рукой.
В статье будет рассматриваться именно настройка среды разработки в WSL — для примера возьмём небольшой проект, написанный на Python/Angular/Go (а почему бы и нет?), разрабатываемый в Visual Studio Code. Однако описанные рекомендации в целом подойдут для любого другого редактора или IDE.
Важный момент: WSL официально поддерживается только в Windows 10 x64, начиная с Anniversary Update. Если у вас иная версия — альтернативное решение представлено в следующем разделе.
Инструкция по установке WSL имеется на официальном сайте Microsoft. Если же описать её кратко, то необходимо:
- Включить поддержку Windows Subsystem for Unix, открыв PowerShell от администратора и выполнив команду:
- Если у вас установлена десктопная редакция Windows 10: зайти в Microsoft Store и установить необходимый вам дистрибутив. Для нашего эксперимента будет использована Ubuntu 18.04 LTS. Затем вы сможете запустить ваш дистрибутив через меню «Пуск».
- Если у вас установлена иная редакция Windows, без Microsoft Store (например, Windows 10 LTSC либо Windows Server): в PowerShell выполнить следующие команды:
PS C:\Users\somebody> Rename-Item .\Ubuntu.appx .\Ubuntu.zip PS C:\Users\somebody> Expand-Archive .\Ubuntu.zip .\Ubuntu PS C:\Users\somebody> cd .\Ubuntu\ PS C:\Users\somebody> .\ubuntu1804.exe
При первом запуске необходимо задать ваши логин и пароль.
Далее уже вам откроется консоль с Ubuntu.
К сожалению, на этих редакциях WSL не поддерживается. Но мы можем без особого труда заменить его Vagrant — мощной утилитой для конфигурирования виртуальных машин. Vagrant работает поверх других сред виртуализации: VirtualBox, VMWare Player или Microsoft Hyper-V. Поэтому стоит понимать, что такой вариант будет по умолчанию медленнее, нежели WSL. А в случае с VirtualBox значительно медленнее из-за файловой системы vboxsf.
Установить Vagrant можно с официального сайта. Также вам потребуется VirtualBox и Git. После этого создайте папку для вашей виртуальной машины, в ней создайте файл Vagrantfile со следующим содержимым:
После чего в том же PowerShell или cmd выполните команду:
После загрузки, настройки и запуска виртуальной машины вы попадёте в консоль Linux. Ура!
Разработка Linux программ из Windows
Всем добрый день.
Никогда не имел дело с линукс-программами, а сейчас понадобилось написать сервер, который будет запущен на Ubuntu.
Мне сказали просто
Разработка приложения под Linux в Windows
Добрый день. Необходимо написать программу, которая будет запускаться в Debian на устройстве Orange.
Разработка многопоточных программ в Windows
Разработать программу вычисления максимального значения в двумерном массиве. Требования.
Разработка под Windows + Linux
Всем привет! Имеется большой проект на с++ в среде Embarcadero Builder и собирается он сейчас.
Написание программ на C++ в Linux под Windows
Извиняюсь за туповатый вопрос, но подскажите, можно ли из Linux (на C++) писать программы для.
используй Makefile
а зачем тебе в уиндоус писать программу для линукс ? отлаживать её ты всё равно не сможешь
в лине можно установить разные среды с привязкой к gcc
не все они хорошие, многие хороши только наполовину
сам вообще использую kwrite (это блокнот с подсветкой) и make
раньше юзал kdevelop, пробовал eclipse
в kdevelop проблемы с дебаггером, в eclipse проблемы с настройками
Дело в том что сервер будет удаленный и без админ панели. То есть мне или себе на комп ОС поставить и компилировать или как-то на стороне сервера это научиться делать, через командную строку наверное? Я еще не знаю как выглядит удаленное управление ОС (кажется Ubuntu будет).
Подскажите пожалуйста какие есть варианты способов разработки у меня?
Буст он и под винду есть, и дока по нему есть.
Хорошо бы вам разобраться что такое демоны в линукс и как их писать
Поставьте себе виртуалку ту же убунту, там и работайте.
Компилировать лучше (но не обязательно) на самом сервере.
Удаленое упроавление: подключаетесь по ssh к тому серверу клиентом (для винды, например,putty) получаете в распоряжение консоль точно такую же как вы имели бы сидя непосредственно на самом сервере. И выполняете нужные команды.
Компилириовать точно так же как и в виндовой командной строке:
niXman, Общая задача — написать сервер для многопользовательской онлайн игры.
http://www.gamedev.ru/projects/forum/?id=144694
Соотвественно главные три вещи, которые мне понадобятся от программы на стороне сервера — это сеть, БД (вероятно MySQL) и многопоточность.
Выбор остановил на ubuntu 10.
voral, порасспрашивал админа немного, он сказал что putty это ssh клиент для винды. а ssh это такая крутая штука для администрирования ОС. Сказал что даже программировать можно внутри нее. Подскажи пожалуйста, где можно почитать про SSH и putty? А то замучаю тут всех))
Нет. Это не штука для администрирования. Это средство работы на удалённом компьютере (при соответствующих настройка можно даже GUI приложения использовать с удаленного сервера). Ну, а зайдя на комп по ssh вы можете делать все, что вам разхрешено на нем — хоть в игры играть, хоть админить, хоть программировать.
Начинайте здесь http://ru.wikipedia.org/wiki/SSH
По сути вам ssh изучать не надо. Вам надо изучить основы работы в никсовой консоли.
Консоль полученная по ssh абсолютно то же самое, что и консоль которая была бы если бы физически сидели за этим сервером. Так что вам в изучение основ Linux.
Для компиляции должен быть установлен компилятор и буст. Все это есть в репозиториях, так что искать где то на левых сайтах не надо. Скажите админу он поставит. Ну или мы поможем поставить , если у вас права есть на это — то сами поставите.
Редактировать можно в консльном редакторе (вроде в убунте это по умолчанию nano). А так же можете использовать vim. Последний, правда, может по началу моральную травму любому новичку доставить. Но, если с ним разобраться и настроить для себя. то получите хороший инструмент для разработки там где нет GUI.
Так же поможет в консоли Minigth Commander, что то вроде виндового far. Команда запуска mc. (Если, конечно, он установлен и есть праа на его использование)
Можно ли писать приложения под Windows, на Linux?
Писать можно и нужно в привычной, и удобной вам среде.
Софт для микроконтроллеров пишут не на микроконтроллерах, а сидя в удобной среде разработки, запущенной в какой-нибудь популярной ОС.
А вот тестировать и отлаживать — нужно в той среде, где приложение будет работать.
Да, можно. Но смотря что за приложение и на чем пишешь.
1. Java. Работать будет на любой системе, включая Mac OS. В ее основе лежит «java-машина» — то есть весь написанный тобой код собирается в так называемый байт-код, который выполняется джава-машиной. Все, что ты увидишь на экране и все, что делает твой софт — все это берет на себя джава-машина, ты только пишешь ей, что делать (грубо говоря).
2. Qt. Это набор библиотек, предостоавляющих тебе примерно то же самое, что и в первом случае, но только без «машины». Но, если твой софт использует что-то специфичное, например напрямую обращается в АПИ винды, то тут ты в пролете.
3. C# и Mono. Работает примерно как и джава-машина, с той лишь разницей, что дотнет сам по себе заточен только под винду, а моно — это костыль, разработанный типа как ему замена. Об адекватном переносе софта с одной платфоры на другую можно забыть — косяки вылезут в любом случае.
4. Питон с каким GTK (pyGTK), но тут тоже все будет зависеть от того, что ты будешь использовать — см. про кьют.
В общем, все записит от того, что за софт ты собрался писать. Исходя из этого уже нужно смотреть на язык и на то, что этому языку нужно для воплощения твоих идей и задумок. И уже только отсюда можно смотреть на кросс-платформенность.
Visual C++ for Linux Development: Практика использования для Windows разработчиков
Так получилось, что за достаточно долгую карьеру Windows и Embedded разработчика судьба свела меня по серьезному с Linux всего лишь несколько месяцев назад. Нужно было написать не очень сложную консольную программу. На тот момент все мои знания о Linux были взяты из курса по операционным системам в вузе (10 лет назад). Но Stackoverflow, google и опыт позволили достаточно быстро справиться с задачей. В итоге все было написано в Visual Studio Code под Ubuntu 14.04. Правда, приложение под Linux являлось только лишь небольшим клиентом для Windows сервера. Поэтому результат не очень удовлетворял меня, так как был оторван от основного проекта в Visual Studio. И только сейчас я смог перенести код в основной проект с помощью Visual C++ for Linux Development. В процессе мне пришлось решить несколько сопутствующих проблем. Об этом я рассажу под катом.
Итак, Visual C++ for Linux Development — это расширение для Visual Studio, позволяющее писать код в привычной многим IDE под Windows, а отлаживать его прямо в целевой операционной среде — Linux. При этом используется GCC и Remote GDB Debugger. Более подробно о расширении можно прочитать в блоге разработчиков или в переводе на хабре.
Инструкции того, как установить, запустить, настроить и т.д. можно найти по ссылкам выше. У меня с этим не возникло никаких проблем. Вопросы начались со стороны Linux системы. Напомню, что я использую Ubuntu 14.04 LTS и дальнейшее изложение пойдет именно про нее. Если кому интересно, я использовал образ для VirtualBox с сайта osboxes.org.
Также, прошу сильно меня не ругать, я все-таки в Linux далеко не гуру. Лучше подскажите, если что-то можно сделать более оптимальным путем.
Отладка первой программы
Перед тем, как использовать удаленную отладку, нужно установить несколько компонентов на Linux системе. Как указано в инструкциях по ссылке выше, это можно сделать, выполнив в командной строке следующее:
Вызвать терминал в Ubuntu можно комбинацией клавиш Ctrl+Alt+T.
Я не помню, запускается ли все это хозяйство сразу или нет, по этому на всякий случай можно перезагрузиться.
Если все сделано правильно, то будет открыт порт 22. Проверить это можно используя команду nmap .
Но сразу подключиться из-под Visual Studio у меня не удалось, так как система почему то не пускала меня под единственным пользователем. Пришлось создать другого. Это можно сделать в System Settings → User Account.
При этом, не забыв нажать кнопку Unlock в верхнем правом углу.
Настроить подключения в Visual Studio можно в окне Tools → Options
Теперь можно запустить и отладить тестовый проект.
При этом в Ubuntu будут скопированы исходники и собранный файл программы (если это не отключено в настройках проекта). Все это можно будет найти в папке /home/ /projects.
В моем случае получилось вот так:
Запустить программу в самом Linux можно из консоли:
Теперь вроде бы можно начинать работать. Я перенес исходные файлы в Visual Studio и… ничего у меня не скомпилировалось. Оказалось, что проекту не достает .h файлов из include directories.
Подключаемые файлы
Вместе с Visual C++ for Linux Development устанавливается и множество заголовочных файлов. Их можно найти тут:
Но моему проекту этого не хватило.
В блоге разработчиков по этому поводу сказано следующее:
В будущем эту проблему обещают решить, ну а сейчас крутитесь как хотите. Там же приведен пример с копированием директории всей /usr/include с помощью PuTTY.
Но мне такой путь не нравится. Лично я предпочитаю расшарить папку с заголовочными файлами. Список директория для поиска include файлов можно посмотреть, выполнив в консоли команды
Мне хватило папки /usr/include .
В случае с моей версией системы, перед тем как расшарить данную папку, нужно перевести ее во владение текущему пользователю. Делается это командой sudo chown -R osboxes:test ‘/usr/include’ .
После этого можно открыть доступ к папке. Как это сделать написано тут.
После этого, сетевые пути можно прописать в Visual Studio как Include Directories.
Такой подход имеет преимущество в виде того, что вы будете работать всегда с оригинальными заголовочными файлами и вам не нужно будет ничего синхронизировать. С другой стороны, будут проблемы при переносе разработки на другой компьютер. Также, как я уже писал, я работаю с Ubuntu, установленной на виртуальной машине на моем компьютере. При такой конфигурации, проблемы с безопасностью уходят на второй план.
Но в других конфигурациях, действия, описанные мной выше, могут быть запрещены.
Таким образом, проблему синхронизации заголовочных файлов нужно решать исходя из условий работы. Тут выбор остается за вами.
Дополнительные команды компилятора и линкера
Заголовочные файлы стали видны и компиляция прошла успешно. Но вот слинковаться проекту не удалось. Дело в том, что я использую потоки и заголовочный файл «pthread.h». Для того, чтобы линкер увидел библиотеку pthread, нужно использовать опцию -pthread или -lpthread.
Для этих целей в Visual C++ for Linux Development есть специальная настройка:
Но у меня почему то она не работает. Проблема эта временная (разработчики уже знают об этом), но решать ее нужно здесь и сейчас. Обойти это ошибку можно используя другую опцию:
Если в место g++ написать g++ -pthread, то получится правильная строка линкера:
Тот же трюк срабатывает и для компилятора.
Запуск отладки с правами администратора
Теперь все скомпилировалось и слинковалось. Однако для работы программы нужны повышенные права, так как она открывает файл устройства ввода. Соответственно, отладку также нужно запускать с правами администратора. Сейчас в Visual C++ for Linux Development эта опция не реализована, но есть одно решение.
Можно повысить в правах gdb и gdbserver командами
Такой совет можно найти в комментариях в посту в блоге разработчиков.
Этот трюк работает, но он не безопасен. По сути, вы отдаете свою систему любому, кто подключается к gdbservr. В моей конфигурации это не страшно, так как все запущено на одном моем компьютере, но в других условиях нужно быть очень аккуратными с такими действиями.
Копирование дополнительных файлов
И остался последний момент. Моя программа читает настройки из текстового файла. Он является частью проекта Visual Studio и при компиляции должен копироваться в папку с исполняемым файлом.
Это можно также сделать в настройках проекта:
Чтобы просто скопировать файл, как остальные исходники, его можно добавить в поле Sources To Copy: @(SourcesToCopyRemotely);config.txt
А скопировать его в другую директорию можно с помощью Additional Sources To Copy.
Формат этой настройки
fulllocationpath1:=fullremotepath1;fulllocationpath2:=fullremotepath2
и т.д.
В моем случае такая строка выглядит так:
Все бы хорошо, но и тут у меня возникли проблемы.
Дело в том, что макрос $(RemoteOutDir) раскрывается в путь, начинающийся с символа «
Судя по всему, этот путь завязан с этой настройкой:
Так вот, при компиляции все работает хорошо. Но вот при копировании файлов почему то
воспринимается не как root директория, а просто как имя папки. То есть создается папка с именем «
Справиться с этим мне так и не удалось, поэтому я просто копировал файл config.txt вручную. Правда, для этого пришлось опять использовать изменение прав на папку:
sudo chown -R osboxes:test ‘/home/test’
Что в итоге
Лично я могу сказать, что Visual C++ for Linux Development extension мне помог. Несмотря на все проблемы и пару багов, он позволил мне быстрее и эффективнее решить задачу, связанную с разработкой под Linux.
Наверное, можно на это возразить, что есть более удобные пути, но я исходил только из своего опыта и знаний, а все это в основном связано с Windows.