
Компиляция майнера XMRig для ОС Windows
В статье «Настройка и компиляция майнеров для процессора в Ubuntu» рассматривались вопросы, связанные с компиляцией программ для майнинга на процессорах в ОС типа Ubuntu.
Операционная система Windows является наиболее распространенной (по крайней мере, до настоящего времени), поэтому вопрос компиляции майнера именно в ней является более актуальным. В то же время, в силу некоторых особенностей этой оси, она не очень дружественна пользователю, мало разбирающемуся в программировании и вопросах компиляции.
Для компиляции майнера под Windows можно использовать Майкрософт Visual Studio и свободно распространяемый пакет MSYS2.
Разработчики XMRig очень кратко описали процесс компиляции своего майнера на странице Windows Build, но представленной там информации недостаточно для неподготовленного пользователя (продвинутого майнера) для самостоятельной сборки и компиляции исполняемого фала майнера.
В данной статье рассматривается последовательность действий по самостоятельной компиляции исполняемого файла майнера XMRig в ОС Виндовс с помощью Microsoft Visual Studio и MSYS2.
Статья рассчитана на пользователей компьютера/майнеров, не являющихся программистами/разработчиками.
Установка среды разработки для компиляции майнера XMRig
Для компиляции исполняемой программы из исходного кода на C и С++ на обычном компьютере нужно иметь соответствующее программное окружение — подходящий дистрибутив (платформу) для разработчиков под Windows и Linux. Очень удобные пакеты для этих целей – это платформа MSYS2 и/или Microsoft Visual Studio.
Для использования Visual Studio достаточно скачать ее свободно распространяемую версию Community со страницы сайта Майкрософт.
MSYS2 представляет собой интерпретацию Linux-овской командной оболочки Bourne Shell (sh), заточенную для операционной системы Windows. MSYS2 заменяет штатный командный интерпретатор cmd.exe от компании Microsoft, встроенный в каждую ее ось.
Кроме оболочек MSYS2/Microsoft Visual Studio, для разработки и компиляции программных приложений нужно иметь подходящую среду: компиляторы (например, GCC и/или MSVC), библиотеки (GTK+ или Qt5) и прочие инструменты для программирования.
Также нужно инсталлировать кроссплатформенную утилиту для сборки программ CMake, скачав ее инсталлятор для Windows (win64-x64 Installer) со страницы загрузок.
Скачивание и установка набора утилит CMake
Скачивание инсталлятора Симейк производится со страницы, где для установки выбирают файл инсталлятора для 64-разрядной версии Windows (файл cmake-*-win64-x64.msi):

При установке CMake нужно добавить эту утилиту в system Path для текущего юзера (или для всех пользователей):

Установка командного интерпретатора MSYS2?
Установка MSYS2 производится с помощью инсталлятора, который скачивается на сайте https://www.msys2.org/.
Для инсталляции MSYS2 на 64-разрядную систему Виндовс используется файл msys2-x86_64-*.exe. Скриншот части страницы сайта https://www.msys2.org/ с загрузочными файлами:

При запуске исполняемого файла установки появляется окно приветствия, в котором нужно нажать кнопку далее:

Затем установщик запросит путь для записи файлов программы MSYS2:

Также будет предложено подтвердить/изменить название папки для ярлыков:

Затем начнется установка пакета MSYS2:

По окончанию инсталляции будет предложен запуск пакета, с чем нужно согласиться и кликнуть на ее завершение, оставив активной соответствующую галочку:

Затем производится обновление и установка необходимых пакетов для MSYS2 командой:
pacman -Syu
После скачивания пакетов нужно подтвердить установку, нажав y и ввод:

По окончанию установки пакет Мсис2 можно запускать через меню Пуск Windows:

После инсталляции MSYS2 нужно установить дополнительные пакеты командой:
pacman -S mingw-w64-x86_64-gcc make mingw-w64-x86_64-cmake mingw-w64-x86_64-pkg-config и pacman -S mingw-w64-x86_64-gcc git make

Сборка и компиляция майнера XMRig из исходного кода на Github
Сначала выполняется скачивание с Github исходного кода майнера XMRig и программных пакетов, от которых зависит работа программы (dependencies).
Исходный код XMRig:

Полный комплект файлов для сборки майнера (в каталог С:\Programs\msys2\home) лучше скачивать командой
git clone https://github.com/xmrig/xmrig.git
Архив с исходным кодом майнера распаковывается в папку XMR, а библиотеки — в папку xmrig-deps, которые помещают на диск C.
Затем подстраивают исходный код программы XMRig под себя.
Изменение программного кода майнера XMRig под нужды пользователя
Конфигурация майнера производится в файле CMakeLists.txt по аналогии с компиляцией под Ubuntu:

Конфигурация майнера редактируется в коде файла CMakeLists.txt в строках:
option(WITH_LIBCPUID "Enable libcpuid support" ON) option(WITH_HWLOC "Enable hwloc support" ON) option(WITH_CN_LITE "Enable CryptoNight-Lite algorithms family" ON) option(WITH_CN_HEAVY "Enable CryptoNight-Heavy algorithms family" ON) option(WITH_CN_PICO "Enable CryptoNight-Pico algorithm" ON) option(WITH_CN_GPU "Enable CryptoNight-GPU algorithm" OFF) option(WITH_RANDOMX "Enable RandomX algorithms family" ON) option(WITH_ARGON2 "Enable Argon2 algorithms family" ON) option(WITH_HTTP "Enable HTTP protocol support (client/server)" ON) option(WITH_DEBUG_LOG "Enable debug log output" OFF) option(WITH_TLS "Enable OpenSSL support" OFF) option(WITH_ASM "Enable ASM PoW implementations" ON) option(WITH_EMBEDDED_CONFIG "Enable internal embedded JSON config" OFF) option(WITH_OPENCL "Enable OpenCL backend" OFF) option(WITH_CUDA "Enable CUDA backend" OFF) option(WITH_NVML "Enable NVML (NVIDIA Management Library) support (only if CUDA backend enabled)" OFF) option(WITH_STRICT_CACHE "Enable strict checks for OpenCL cache" ON) option(WITH_INTERLEAVE_DEBUG_LOG "Enable debug log for threads interleave" OFF) option(BUILD_STATIC "Build static binary" OFF) option(ARM_TARGET "Force use specific ARM target 8 or 7" 0) option(HWLOC_DEBUG "Enable hwloc debug helpers and log" OFF)
При желании отключить какую-то опцию в конце строки пишут OFF. Для включения ее в исполняемый файл – используют команду ON.
К примеру, при майнинге только на процессоре можно отключить модули для видеокарт. Кроме того, можно отключить опцию Enable OpenSSL support, что в итоге создаст файл xmrig-notls (версия без шифровки трафика майнера), который потребляет меньше ресурсов.
Комиссия разработчику (devfee) устанавливается/отключается в файле donate.h (папка src) в строках:
constexpr const int kDefaultDonateLevel = x; constexpr const int kMinimumDonateLevel = x;
Для компиляции файла майнера нужно также скачать архив его зависимостей со страницы xmrig-deps:

Скачанный архив xmrig-deps-*.zip разархивируют в корень диска C в папку с названием xmrig-deps.
В папке должны быть подпапки gcc, msvc 2015, msvc2017, msvc2019:

Затем запускают командный интерпретатор MSYS2 и с помощью команды
cd C:/XMR
переходят в директорию XMR, куда предварительно был распакован архив Source code.zip с исходниками майнера:

Затем создают папку build и переходят в нее. Для этого последовательно выполняют команды:
mkdir build && cd build

Затем совершают сборку проекта XMRig, для чего запускают команды:
cmake .. -G "Unix Makefiles" -DXMRIG_DEPS=c:/xmrig-deps/gcc/x64 && make
Для последних версий майнера:
"c:\Program Files\CMake\bin\cmake.exe" .. -G "Unix Makefiles" -DXMRIG_DEPS=c:/xmrig-deps/gcc/x64
(при необходимости прописать свой путь к каталогу cmake и xmrig-deps/gcc/x64)
make -j$(nproc)
При возникновении ошибки CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required) нужно подкорректировать (понизить до своей версии cmake) файл CMakeLists.txt.
При успешной сборке и компиляции в папке build появится файл майнера:

Процесс компиляции xmrig с поддержкой видеокарт Nvidia подробно описан в статье «Компиляция программы xmrig с плагином для видеокарт Nvidia«.
Запуск майнинга Monero описан в статье «Майнинг криптовалюты Monero (XMR) на алгоритме RandomX».
Скриншот работы самостоятельно сконфигурированного и скомпилированнного майнера XMRig для Windows:



