Статьи

Компиляция Ethminer под Linux

В статье «Майнинг в программе ethminer на поздних эпохах DAG в операционной системе Linux» уже описывались преимущества майнера Ethminer для алгоритма Ethash PoW с открытым исходным кодом для OpenCL и CUDA — устройств.

Самостоятельная сборка майнера обеспечивает наиболее полную совместимость с конкретным «железом», что обеспечивает высокую надежность работы и более высокую вероятность отсутствия встроенных троянских модулей.

В данной статье описывается последовательность действий по компиляции из исходного кода этого майнера для операционной системы Linux (на примере xubuntu).

Сборка Ethminer из исходного кода для операционной системы Linux

В Linux-подобных системах для сборки исполняемого файла ethminer нужно иметь установленные пакеты Git, Python, Perl, Cmake, библиотеки libleveldb-dev, libcurl4-openssl-dev, libmicrohttpd-dev и libudev-dev, а также OpenGL, NVidia CUDA.

Их и ряд других необходимых компонентов можно установить командой:

sudo apt install git libdbus-1-dev mesa-common-dev cmake libleveldb-dev libcurl4-openssl-dev

Проверить наличие в системе поддержки Perl можно командой:

perl -v

При наличии этого языка в системе появится сообщение примерно такого вида:

Последнюю версию Perl для Unix-подобных систем (Linux, Solaris, AIX, HPUX и т. д.) можно скачать на сайте www.perl.org.

Затем следует скачать исходники Ethminer с Github командами:

mkdir ~/ethminer; cd ~/ethminer
git clone https://github.com/ethereum-mining/ethminer.git

После этого необходимо обновить git submodules командой (терминал нужно запускать из папки, в которую скачаны исходники):

git submodule update --init --recursive

после этого из папки ethminer запускают терминал и выполняют команды:

mkdir build && cd build && cmake .. && cmake --build

В результате успешной компиляции в папке build будет получен исполняемый файл майнера:

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

  • -DETHASHCL=ON — для включения поддержки майнинга на видеокартах, поддерживающих технологию OpenCL, эта опция включена по умолчанию;
  • -DETHASHCUDA=ON — вклюячение поддержки майнинга на видеокартах nvidia с помощью технологии CUDA, опция по умолчанию включена;
  • -DAPICORE=ON — включение сервера API, опция по умолчанию включена;
  • -DBINKERN=ON — инсталляция бинарных ядер AMD, опция по умолчанию включена;
  • -DETHDBUS=ON — включение поддержки D-Bus, опция по умолчанию выключена.

Для компиляции майнера для видеокарт AMD можно воспользоваться командами:

mkdir build; cd build

cmake .. -DETHASHCUDA=OFF -DETHASHCL=ON

После этой команды запуститься первый этап автоматической сборки программы из исходного кода по сценарию, записанному в файле CmakeLists.txt утилитой cmake:

Процесс займет несколько минут.

По окончанию первого этапа сборки появятся сообщения об успехе и записи необходимых для окончательной сборки файлов в папку build:

-- Configuring done

-- Generating done

-- Build files have been written to: /home/intel33/Рабочий стол/ethminer/ethminer/build

Окончательную сборку исполняемого файла ethminer по финальному скрипту запускают командой:

cmake --build .

Процесс финальной сборки ethminer займет некоторое время:

По окончании процесса сборки исполняемого файла ethminer в терминале появится сообщение об успехе:

Файл ethminer будет находится в папке build.

Для видеокарт Nvidia при компиляции можно использовать команды:

mkdir build; cd build

cmake .. -DETHASHCUDA=ON -DETHASHCL=OFF

cmake --build .

Для обеспечения полной совместимости кода майнера с установленным железом можно использовать более продвинутые команды компиляции (запускать из папки build):

export CFLAGS="-O2 -march=native -msse3 -fomit-frame-pointer -pipe"

export CHOST="x86_64-pc-linux-gnu"

export CXXFLAGS="${CFLAGS}"

export LDFLAGS="-Wl,-O1"

cmake .. -DETHASHCUDA=ON -DETHASHCL=ON

make -j 4

Ошибки, возникающие при компиляции ethminer

При появлении ошибок вида:

CMake Error at CMakeLists.txt:3 (include):

include could not find load file:

cmake/cable/bootstrap.cmake

CMake Error at CMakeLists.txt:5 (include):

include could not find load file:

CableBuildInfo

CMake Error at CMakeLists.txt:6 (include):

include could not find load file:

CableBuildType

CMake Error at CMakeLists.txt:7 (include):

include could not find load file:

CableToolchains

CMake Error at CMakeLists.txt:8 (include):

include could not find load file:

HunterGate

CMake Error at CMakeLists.txt:10 (include):

include could not find load file:

defaults/HunterCacheServers

CMake Error at CMakeLists.txt:12 (cable_configure_toolchain):

Unknown CMake command "cable_configure_toolchain".

-- Configuring incomplete, errors occurred!

-- Configuring incomplete, errors occurred!

либо

fatal: не найден git репозиторий (или один из родительских каталогов): .git

нужно повторно инициализировать git, а также обновить субмодули командами:

git init

(терминал запущен из папки build):

git submodule update --init --recursive

При появлении ошибки:

- unsupported GNU version! gcc versions later than 5 are not supported!

нужно вручную установить нужную версию набора программ компиляции gcc:

apt-get install gcc-5 g++-5

export CC=`which gcc-5`

export CXX=`which g++-5`

Если при финальной сборке

(команда cmake —build .)

исполняемого файла при генерации ядра OpenCL появляется сообщение об отсутствии файла ethash.cl:

[ 46%] Generating OpenCL Kernel Byte Array

CMake Error at /home/intel33/Рабочий стол/ethminer/ethminer/libethash-cl/bin2h.cmake:50 (file):

file failed to open for reading (No such file or directory):

/home/intel33/Рабочий\ стол/ethminer/ethminer/libethash-cl/kernels/cl/ethash.cl

make[2]: *** [libethash-cl/CMakeFiles/ethash-cl.dir/build.make:62: libethash-cl/ethash.h] Ошибка 1
make[1]: *** [CMakeFiles/Makefile2:408: libethash-cl/CMakeFiles/ethash-cl.dir/all] Ошибка 2

make: *** [Makefile:152: all] Ошибка 2

хотя файл ethash.cl находится по указанному пути, нужно перенести папку с исходниками в место без кириллических названий типа Рабочий стол или Загрузки, удалить все содержимое из папки build, и повторить процесс сборки заново.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Chinese (Traditional) ZH-TW English EN French FR German DE Russian RU Spanish ES