Я скомпилировал Bitcoin Core на одном Raspberry Pi из исходников после установки всех необходимых зависимостей, включая все libboost и BerkeleyDB. Это приложение работает нормально и bitcoind
счастливо живет в/usr/local/bin
Поэтому я попытался скопировать bitcoind
и другие исполняемые файлы Биткойн из этого каталога на новый Raspberry Pi с совершенно новой чистой операционной системой, и приложения не запустились. У меня были ошибки, пока я не установил libboost и BerkeleyDB, а также все остальные зависимости на этот второй компьютер.
Я думал, что процесс компиляции сделал автономную исполняемую программу? Почему для скомпилированного бинарного файла по-прежнему требуются эти общие библиотеки?
Например, с сайта bitcoin.org можно загрузить исполняемые файлы, которые действительно автономны. Как я могу скомпилировать из исходного кода такой автономный исполняемый файл?
Стандартный процесс компиляции не включает статические зависимости в исполняемый файл. Это относится к установленной libdb, boost и т. д.
Это (библиотеки динамических ссылок) является эффективной концепцией. В противном случае каждый исполняемый файл, который использует, например, boost, потребует включения всей зависимости boost в двоичный файл.
«Официальные» двоичные файлы Bitcoin-Core, предлагаемые через bitcoin.org, представляют собой статически скомпилированные исполняемые файлы (они включают все). Это необходимо для получения независимости от Linux/дистрибутива, а также для полной сборки детерминированных двоичных файлов (безопасность/целостность).
Вы можете создать статически связанный биткойн самостоятельно, выполнив процесс сборки «зависит»: https://github.com/bitcoin/bitcoin/tree/master/depends .
Яннес