Что ты как маленький? Вумен надыть вначале установить и потом уже за маны дёргать. На крайняк без манов закрасноглагим "методом тыка". Но как раз с этим и проблема: $make woman make: don't know how to make woman. Stop
Думаешь Мёрдок всё таки нашёл способ как скомпилять вуман.тар.гз и его за это ликвидировали рептилоиды? Столлман тоже в теме, но прикинулся шлангом чтобы его не трогали? А Райзер слишком приблизился к сорцам и чуть за это не поплатился, но решил сотрудничать?
Так, знатоки линукса. Кто-нибудь может подсказать как собрать проект на линуксе, чтобы его можно было потом запустить из под винды? Точнее я не прошу прямых инструкций что и как делать, а хотя бы с чего начать изучение данного вопроса?
Зависит от того, на чём пишешь. 1) си, плюсы, фортран и прочие старинные компилируемые языки: mingw (есть компиляторы и библиотеки, в Арче, например, их огромная куча в AUR-е, с которым работать через yay аналогично pacman). Ставишь всё, что нужно и делаешь x86_64-w64-mingw32-cmake / i686-w64-mingw32-cmake (первое 64 бита, второе 32 бита) (в частности mingw-cmake сам слинкует нужные библиотеки) или что-то ещё аналогично тому, как делаешь под линукс, динамические библиотеки для установленных пакетов можно вытащить из /usr/x86_64-w64-mingw32/bin/*.dll. Естественно, нельзя использовать платформозависимые хедеры, либо нужно закрывать их условной компиляцией. 2) языки со встроенной поддержкой платформ, например, лазарус, раст. Для них у каждого своё решение. Для раста, например, нужно установить соответствующую цепочку сборки (rustup toolchain install x86_64-pc-windows-gnu) и обращаться к ней (cargo b --release --target=x86_64-pc-windows-gnu). Если какие-то крейты требуют переменные среды, то вместо /usr нужно указывать просто /usr/x86-64-w64-mingw32. 3) виртуальные машины (JVM, GraalVM, .NET) — им пофиг на платформу. В частности грааль умеет конвертировать промежуточный llvm-байткод (через него работают clang, rust и др.) и некоторые языки, можно через это посмотреть. 4) интерпретируемые языки — тоже пофиг на платформу. 5) (это больше для компиляции юникс-ориентированых приложений с винды под винду) cygwin. Он по своей сути похож на wine, только не на стадии исполнения, а на стадии компиляции. Для него придётся таскать свой рантайм.
Спасибо. У меня си. То есть нужно почитать про компиляцию при помощи mingw? Я правда эту команду не понял пока x86_64-w64-mingw32-cmake. Она генерирует cmake-файл? Если у меня уже есть cmake-файл, можно в cmake передать какие-от опции, чтоб он компилировал под винду, под определённую разрядность? И я так понимаю, в комплекте с mingw идут и хэдеры под винду?
Команды делают то же самое, что и соответствующие без префикса, только линкуют другую платформу. Для компиляции под линукс на другую архитектуру используется всё то же самое, только префикс другой. Хедеры для всевозможных библиотек одни и те же, разница в статических и динамических библиотеках. Естественно, ты не можешь использовать pthreads.h под виндой (разве что через cygwin), но скорее всего низкоуровневые ты и так не используешь, а высокоуровневые сами по себе адаптированы под разные платформы. Просто в условной build вместо «cmake ..» пишешь «x86-64-w64-mingw32-cmake ..», дальше «make» (без префикса), strip можно использовать с префиксом и без, я не увидел отличий. Твоя задача только установить компилятор и mingw-версии библиотек (или собрать точно также через mingw). Ну и скопировать зависимости (если есть) потом, потому что на винде принято таскать библиотеки с собой. При запуске на винде системная ошибка подскажет каких библиотек не хватает в большинстве случаев, вслепую придётся идти только в хитросплетениях вроде pango/cairo. Часто можно просто выкачать откуда-нибудь из интернета готовую сборку библиотек или стырить из другой программы, тоже вариант. С опытом поймёшь что и куда копировать.
А, спасибо большое. Вроде немножко начинаю понимать. Ну, буду помаленьку пытаться. Сначала наверное попробую какой-нибудь свой маленький проектик собрать.
Отличный комментарий!