При сборке bitcoind я получаю сообщение об ошибке "headers.h:36:20: фатальная ошибка: db_cxx.h: нет такого файла или каталога"

При сборке bitcoind на LinuxCoin (на основе Debian) я получаю эту ошибку

"headers.h:36:20: фатальная ошибка: db_cxx.h: нет такого файла или каталога"

следуя инструкциям на странице https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.txt .

Я считаю, что ошибка вызвана тем, что пакет «libdb4.8++-dev» не существует для дистрибутива, так как при попытке «apt-get install» я получаю:

Пакет libdb4.8++-dev недоступен, но на него ссылается другой пакет. Это может означать, что пакет отсутствует, устарел или доступен только из другого источника.

E: Пакет «libdb4.8++-dev» не имеет кандидата на установку.

ПРИМЕЧАНИЕ. libdb4.8-dev и все остальные зависимости уже установлены.

Вероятно, это глупая ошибка с моей стороны, но любая помощь приветствуется! Спасибо.

У вас есть db_cxx.hфайл где-нибудь? Вы можете проверить с locate.
Нет. Раньше у меня была версия db-5.1.8, но я удалил ее, так как в ридми говорилось, что мне нужна 4.8.
Если у вас не установлена ​​libdb-devel, она не скомпилируется. Вы можете использовать 5.1.8, просто поймите, что ваши файлы не будут совместимы со сборками, сделанными в более ранних версиях.
Ага. Я повторно загрузил и скомпилировал 5.1.8, и все в порядке, но я получаю ту же ошибку. Не знаю, как настроить этот make-файл, чтобы включить каталоги db5.1.8.
Я использую make-файл: pastebin.com/wGpPNjEb . Мои каталоги db-5.1.8 расположены в /usr/local/BerkeleyDB.5.1/
@DavidSchwartz - небольшое исправление - я обнаружил, что пакет называется libdb-dev

Ответы (6)

Вам нужно добавить -I <directory>в конец CXX=g++строки в Makefile. Каталог должен быть тот, который содержит db_cxx.hфайл из вашей установки BerkeleyDB. Итак, измените:

CXX=g++

к

CXX=g++ -I /usr/local/BerkeleyDB.5.1

Вам может понадобиться /includeили что-то подобное в конце этого. Это зависит именно от того, в каком каталоге находится db_cxx.hфайл.

Отлично поработал с Беркли 5.1.8, спасибо.
Да, спасибо, отлично работает с Berkeley 5.1.8.

Я сделал следующую команду в Ubuntu, и она сработала.

sudo apt-get install libdb++-dev
brew установить berkeley-db на Mac OS X

Я думаю, вы можете установить пакет libdb4.8++-dev, если добавите стабильный репозиторий Debian в свой sources.list.

Я сделал это на своей системе (debian sid), и теперь я могу приступить к установке. Однако я еще не тестировал полную компиляцию bitcoind.

libdb5.1++-dev также работает для тех, кто предпочитает устанавливать более поздние версии пакетов. +1 спасибо!

он хорошо компилируется с более поздними версиями, но будьте осторожны и не перепутайте db*-dev и db*++-dev. Здесь вы должны установить версию "++"

Спасибо, это то, чего мне не хватало, db*++-dev вместо db*-dev

Попробуй это:

sudo apt-get установить libdb5.3++-dev

Последний стабильный пакет, я использовал его в новом патче Bitcoin-Qt 8.3 от GIT, и он безупречно скомпилировался для любых файлов, которые были включены в него.

Примечание:

Если вы используете gcc/g++ версии 4.8 и искали libdb4.8++-dev, есть причина, по которой вы не смогли найти кандидата на установку.

Не путайте пакет libdb5.3++-dev с версией компилятора и компоновщика gcc/g++, они не являются частью gcc/g++, а являются дополнительной библиотекой разработки независимо от того, какую версию компилятора вы используете. использовать.

Если вы собираете под homebrew на MacOS, установите необходимые заголовочные файлы через

brew install berkeley-db