Сборка и установка ccminer в Linux (Ubuntu 16.04 и 17.04) из исходников GitHub
Рецепт был опубликован 7 июня 2017 года в 19:07, а менялся 7 июня 2017 года в 19:15.
Постоянная ссылка: http://www.nixp.ru/recipes/71.html
Если вы интересовались майнингом различных криптовалют в Linux с видеопроцессором (GPU) от NVIDIA, то наверняка знаете о свободном проекте ccminer, специально предназначенный для NVIDIA CUDA. Его исходный код распространяется на условиях разных свободных лицензий (включая GNU GPLv3 и Apache License 2.0). Очевидно, ccminer не майнит сами биткоины (BTC), однако поддерживается майнинг 50+ altcoins включая такие, как Blake 256 и Blake2-S, Decred, LBRY, lyra2 (CryptoCoin), lyra2v2 (VertCoin), lyra2z (ZeroCoin), Skein, Scrypt, Woodcoin, X11 (DarkCoin), X13 (MaruCoin), X14, X15, X17…
Сборка ccminer в Linux имеет свои особенности (проблемы) — они и рассмотрены в этом рецепте на примере установки ccminer в дистрибутиве Ubuntu Linux двух версий: 16.04 (xenial) и 17.04 (zesty).
1. Установите базовые компоненты для сборки приложений в Ubuntu Linux:
sudo apt-get install build-essential automake
2. Установите недостающие системные библиотеки, а также необходимые для работы с видеопроцессором (GPU) компоненты NVIDIA CUDA:
sudo apt-get install libcurl4-openssl-dev libssl-dev nvidia-cuda-dev nvidia-cuda-toolkit
Без первой (libcurl4-openssl-dev) сообщение об ошибке на этапе ./configure будет выглядеть странно:
./configure: line 6177: syntax error near unexpected token `,' ./configure: line 6177: `LIBCURL_CHECK_CONFIG(, 7.15.2, ,' make: *** No targets specified and no makefile found. Stop.
Без пакетов CUDA — ошибки выглядят так:
ccminer.cpp:48:26: fatal error: cuda_runtime.h: No such file or directory compilation terminated. Makefile:1671: recipe for target 'ccminer-ccminer.o' failed make[2]: *** [ccminer-ccminer.o] Error 1
Внимание: к сожалению, пакеты NVIDIA CUDA тянут за собой множество зависимостей из-за используемых графических компонентов. В общей сложности на «голой» серверной системе (Ubuntu minimal) объём этих пакетов составляет почти 900 мегабайт.
3. Только для Ubuntu 17.04: генерируемый стандартно Makefile не компилируется со стандартным пакетом nvidia-cuda-toolkit и нуждается в некоторых модификациях. Иначе при сборке возникает такая ошибка:
... /usr/bin/x86_64-linux-gnu-ld.bfd.real: heavy/heavy.o: relocation R_X86_64_32S against `.bss' can not be used when making a shared object; перекомпилируйте с параметром -fPIC /usr/bin/x86_64-linux-gnu-ld.bfd.real: heavy/cuda_blake512.o: relocation R_X86_64_32S against `.bss' can not be used when making a shared object; перекомпилируйте с параметром -fPIC /usr/bin/x86_64-linux-gnu-ld.bfd.real: heavy/cuda_combine.o: relocation R_X86_64_32S against `.bss' can not be used when making a shared object; перекомпилируйте с параметром -fPIC /usr/bin/x86_64-linux-gnu-ld.bfd.real: heavy/cuda_groestl512.o: relocation R_X86_64_32S against `.bss' can not be used when making a shared object; перекомпилируйте с параметром -fPIC /usr/bin/x86_64-linux-gnu-ld.bfd.real: heavy/cuda_hefty1.o: relocation R_X86_64_32S against `.bss' can not be used when making a shared object; перекомпилируйте с параметром -fPIC ...
Быстрое (не очень красивое) решение — отредактировать вручную Makefile.am:
3.1. В nvcc_FLAGS добавьте опцию компиляции fPIC, изменив соответствующую строчку на:
nvcc_FLAGS += $(JANSSON_INCLUDES) --ptxas-options="-v" --compiler-options '-fPIC'
3.2. Пропишите эту опцию отдельно для нескольких файлов, собираемых без использования nvcc_FLAGS:
# This object does not use cuda device code but call the different kernels (autotune) scrypt/salsa_kernel.o: scrypt/salsa_kernel.cu $(NVCC) --compiler-options '-fPIC' $(JANSSON_INCLUDES) -I. @CUDA_INCLUDES@ @CUDA_CFLAGS@ -gencode=arch=compute_20,code=\"sm_21,compute_20\" -o $@ -c $<
# These kernels are for older devices (SM)
scrypt/test_kernel.o: scrypt/test_kernel.cu $(NVCC) --compiler-options '-fPIC' $(JANSSON_INCLUDES) -I. @CUDA_INCLUDES@ @CUDA_CFLAGS@ -gencode=arch=compute_20,code=\"sm_20,compute_20\" -o $@ -c $<
scrypt/fermi_kernel.o: scrypt/fermi_kernel.cu $(NVCC) --compiler-options '-fPIC' $(JANSSON_INCLUDES) -I. @CUDA_INCLUDES@ @CUDA_CFLAGS@ -gencode=arch=compute_20,code=\"sm_21,compute_20\" -o $@ -c $<
scrypt/kepler_kernel.o: scrypt/kepler_kernel.cu $(NVCC) --compiler-options '-fPIC' $(JANSSON_INCLUDES) -I. @CUDA_INCLUDES@ @CUDA_CFLAGS@ -gencode=arch=compute_30,code=\"sm_30,compute_30\" -o $@ -c $<
scrypt/nv_kernel.o: scrypt/nv_kernel.cu $(NVCC) --compiler-options '-fPIC' $(JANSSON_INCLUDES) -I. @CUDA_INCLUDES@ @CUDA_CFLAGS@ -gencode=arch=compute_30,code=\"sm_30,compute_30\" -o $@ -c $<
Можно сделать более изящно с переменными (если будет настроение сделать это — обязательно отправьте pull request в GitHub проекта!).
4. Всё готово к сборке ccminer — осталось запустить ./build.sh. Однако в случае с Ubuntu 17.04 сделать это надо так:
$ CFLAGS="-fPIC" CXXFLAGS="-fPIC" ./build.sh
Для Ubuntu 16.04 достаточно просто запустить стандартно:
$ ./build.sh
5. Запуск собранного ccminer подтвердит, что всё прошло успешно:
$ ./ccminer -V *** ccminer 2.0 for nVidia GPUs by tpruvot@github *** Built with the nVidia CUDA Toolkit 8.0 64-bits
Originally based on Christian Buchner and Christian H. project Include some algos from alexis78, djm34, sp, tsiv and klausT.
BTC donation address: 1AJdfCpLWPNoAMDfHF1wD5y8VgKSSTHxPo (tpruvot)
ccminer v2.0 libcurl/7.47.0 OpenSSL/1.0.2g zlib/1.2.8 libidn/1.32 librtmp/2.3
P.S. Если хотите использовать особую версию NVIDIA CUDA, установленную в нестандартный каталог (например, CUDA 8.0 в Ubuntu 16.04 по этой инструкции поставится в /usr/local/cuda-8.0), отредактируйте build.sh, раскомментировав и исправив строку с «export PATH», например, так:
export PATH="$PATH:/usr/local/cuda-8.0/bin/"
Теперь нужный для сборки nvcc из пакета NVIDIA CUDA будет использоваться из указанного каталога.
- Из той же серии:
- Установка 64-битного плагина Adobe Flash в Ubuntu Linux
- Очистка Linux-системы Debian/Ubuntu от файлов, оставшихся после удаления пакетов
- Ubuntu, Synaptic: отменить изменения
Последние комментарии
- OlegL, 17 декабря 2023 года в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1