Вопрос или проблема
Важные вещи:
Здравствуйте, пользователи Ubuntu. Недавно я решил погрузиться в мир майнинга Ethereum и собрать ethminer
самостоятельно. Однако после установки cuda
я столкнулся с небольшой проблемой. При выполнении sudo cmake --build .
после cmake .. -DETHASHCUDA=ON -DETHASHCL=OFF
консоль выдала следующее:
[ 0%] Собран целевой файл BuildInfo.h
[ 29%] Собран целевой файл devcore
[ 41%] Собран целевой файл ethash
[ 45%] Сборка объекта NVCC (Device) libethash-cuda/CMakeFiles/ethash-cuda.dir/ethash-cuda_generated_ethash_cuda_miner_kernel.cu.o
В файле, включенном из /usr/local/cuda/include/cuda_runtime.h:78:0,
из <command-line>:0:
/usr/local/cuda/include/host_config.h:119:2: ошибка: #error -- неподдерживаемая версия GNU! gcc версии выше 5 не поддерживаются!
#error -- неподдерживаемая версия GNU! gcc версии выше 5 не поддерживаются!
^~~~~
Ошибка CMake в ethash-cuda_generated_ethash_cuda_miner_kernel.cu.o.Release.cmake:222 (сообщение):
Ошибка при генерации
/home/diamond/ethminer/build/libethash-cuda/CMakeFiles/ethash-cuda.dir//./ethash-cuda_generated_ethash_cuda_miner_kernel.cu.o
libethash-cuda/CMakeFiles/ethash-cuda.dir/build.make:63: рецепт для цели 'libethash-cuda/CMakeFiles/ethash-cuda.dir/ethash-cuda_generated_ethash_cuda_miner_kernel.cu.o' завершился неудачно
make[2]: *** [libethash-cuda/CMakeFiles/ethash-cuda.dir/ethash-cuda_generated_ethash_cuda_miner_kernel.cu.o] Ошибка 1
CMakeFiles/Makefile2:232: рецепт для цели 'libethash-cuda/CMakeFiles/ethash-cuda.dir/all' завершился неудачно
make[1]: *** [libethash-cuda/CMakeFiles/ethash-cuda.dir/all] Ошибка 2
Makefile:149: рецепт для цели 'all' завершился неудачно
make: *** [all] Ошибка 2
Дополнительная информация:
Я установил CUDA с помощью sudo apt install cuda
. Он установил nvidia-275
и сам cuda
(вместе с множеством других вещей)
Это решило мою проблему:
sudo rm /usr/local/cuda/bin/gcc
sudo rm /usr/local/cuda/bin/g++
sudo apt install gcc-5 g++-5
sudo ln -s /usr/bin/gcc-5 /usr/local/cuda/bin/gcc
sudo ln -s /usr/bin/g++-5 /usr/local/cuda/bin/g++
Ответ или решение
Проблема с компиляцией ethminer и поддерживаемыми версиями gcc
При компиляции программного обеспечения для майнинга Ethereum, такого как ethminer, пользователи часто сталкиваются с проблемами совместимости между версиями компилятора gcc и CUDA. В данной статье мы подробно разберем одну из распространенных ошибок, связанной с версиями gcc, и предложим решение.
Описание проблемы
Как показано в приведенном вами выводе компиляции, ошибка возникает в процессе компиляции файла ethash_cuda_miner_kernel.cu.o
. Конкретно вы получаете следующее сообщение об ошибке:
#error -- unsupported GNU version! gcc versions later than 5 are not supported!
Это указывает на то, что установленная версия компилятора gcc превышает версию 5, что недопустимо для работы с CUDA. NVIDIA ограничивает использование более новых версий gcc, так как в них могут быть изменения, несовместимые с CUDA.
Почему возникают проблемы с совместимостью?
CUDA (Compute Unified Device Architecture) – это параллельная вычислительная платформа и API от NVIDIA, которая позволяет разработчикам использовать графические процессоры (GPU) для общих вычислений. Каждая версия CUDA имеет свою спецификацию, в которой указаны совместимые версии компилятора gcc. Например, для CUDA 10.2 по умолчанию поддерживается gcc до версии 5.0.
Проблема, с которой вы столкнулись, часто возникает после установки CUDA через пакетный менеджер apt
, который может автоматически установить последние доступные версии gcc и g++, несовместимые с используемой версией CUDA.
Решение проблемы
В вашей ситуации было предложено следующее решение:
-
Удаление текущих ссылок gcc и g++:
sudo rm /usr/local/cuda/bin/gcc sudo rm /usr/local/cuda/bin/g++
-
Установка совместимых версий gcc и g++:
sudo apt install gcc-5 g++-5
-
Создание символьных ссылок на установленные версии:
sudo ln -s /usr/bin/gcc-5 /usr/local/cuda/bin/gcc sudo ln -s /usr/bin/g++-5 /usr/local/cuda/bin/g++
Эти команды позволят сделать gcc и g++ версии 5 доступными для использования в вашей среде CUDA. Проверьте результат выполнения команд и повторите процесс компиляции ethminer.
Заключение
Ошибки, связанные с несовместимостью версий компилятора и CUDA, являются распространенной проблемой среди разработчиков, работающих с технологиями NVIDIA. Следуя описанному решению, вы сможете успешно скомпилировать ethminer и продолжить путь в мир Ethereum-майнинга. Убедитесь, что вы регулярно проверяете документацию вашей версии CUDA для получения информации о совместимости с компиляторами.
Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться к сообществу или профессионалам в области компьютинга.