Estoy tratando de compilar Bitcoin Core v0.10.0 en Ubuntu 20.04, pero aparece el siguiente error:
rpcserver.cpp: En la función 'void StartRPCThreads()': rpcserver.cpp:594:77: error: no hay función coincidente para llamar a 'boost::asio::ssl::context::context(boost::asio::io_service&, boost::asio::ssl::context_base: :método)' 594 | rpc_ssl_context = nuevo ssl::context(*rpc_io_service, ssl::context::sslv23); | ^ En el archivo incluido desde /usr/include/boost/asio/ssl/context.hpp:757, de /usr/include/boost/asio/ssl.hpp:18, de rpcprotocol.h:16, de rpcserver.h:10, de rpcserver.cpp:6: /usr/include/boost/asio/ssl/impl/context.ipp:371:1: nota: candidato: 'boost::asio::ssl::context::context(boost::asio::ssl::context&& )' 371 | contexto::contexto(contexto&& otro) | ^~~~~~~ /usr/include/boost/asio/ssl/impl/context.ipp:371:1: nota: el candidato espera 1 argumento, se proporcionan 2 /usr/include/boost/asio/ssl/impl/context.ipp:63:1: nota: candidato: 'boost::asio::ssl::context::context(boost::asio::ssl::context_base ::método)' 63 | contexto::contexto(contexto::método m) | ^~~~~~~ /usr/include/boost/asio/ssl/impl/context.ipp:63:1: nota: el candidato espera 1 argumento, se proporcionan 2 rpcserver.cpp:613:50: error: 'class boost::asio::ssl::context' no tiene ningún miembro llamado 'impl' 613 | SSL_CTX_set_cipher_list(rpc_ssl_context->impl(), strCiphers.c_str()); | ^~~~ rpcserver.cpp: En instanciación de 'void RPCListen(boost::shared_ptr >, boost::asio::ssl::context&, bool) [con Protocolo = boost::asio::ip::tcp; SocketAcceptorService = impulso::asio::ejecutor]': rpcserver.cpp:673:58: requerido desde aquí rpcserver.cpp:482:111: error: 'class boost::asio::basic_socket_acceptor' no tiene ningún miembro llamado 'get_io_service' 482 | boost::shared_ptr > conn(new AcceptedConnectionImpl(aceptador->get_io_service(), context, fUseSSL)); | ~~~~~~~~~~^~~~~~~~~~~~~~ En el archivo incluido de natives/block.h:9, de chainparams.h:11, de base58.h:17, de rpcserver.cpp:8: ./primitives/transaction.h: En instanciación de 'static _OI std::__copy_move::__copy_m(_II, _II, _OI) [with _II = const CTxOut*; _OI = CTxSalida*]': /usr/include/c++/9/bits/stl_algobase.h:404:30: requerido de '_OI std::__copy_move_a(_II, _II, _OI) [con bool _IsMove = false; _II = const CTxSalida*; _OI = CTxSalida*]' /usr/include/c++/9/bits/stl_algobase.h:441:30: requerido de '_OI std::__copy_move_a2(_II, _II, _OI) [con bool _IsMove = false; _II = __gnu_cxx::__normal_iterator >; _OI = __gnu_cxx::__normal_iterator >]' /usr/include/c++/9/bits/stl_algobase.h:474:7: requerido de '_OI std::copy(_II, _II, _OI) [with _II = __gnu_cxx::__normal_iterator >; _OI = __gnu_cxx::__normal_iterator >]' /usr/include/c++/9/bits/vector.tcc:238:31: requerido de 'std::vector& std::vector::operator=(const std::vector&) [con _Tp = CTxOut; _Alloc = estándar:: asignador]' monedas.h:90:19: requerido desde aquí ./primitives/transaction.h:103:7: advertencia: implícitamente declarado 'CScript& CScript::operator=(const CScript&)' está en desuso [-Wdeprecated-copy] 103 | clase CTxOut | ^~~~~~ En el archivo incluido de ./primitives/transaction.h:10, de primitivas/bloque.h:9, de chainparams.h:11, de base58.h:17, de rpcserver.cpp:8: ./script/script.h:365:5: nota: porque 'CScript' tiene 'CScript::CScript(const CScript&)' proporcionado por el usuario 365 | CScript(const CScript& b) : std::vector(b.begin(), b.end()) { } | ^~~~~~~ En el archivo incluido de /usr/include/c++/9/algorithm:61, de serializar.h:9, de cantidad.h:9, de rpcserver.h:9, de rpcserver.cpp:6: /usr/include/c++/9/bits/stl_algobase.h:342:18: nota: primero se requiere el método sintetizado 'CTxOut& CTxOut::operator=(const CTxOut&)' aquí 342 | *__resultado = *__primero; | ~~~~~~~~~~^~~~~~~~~~ En archivo incluido de chain.h:11, de principal.h:14, de rpcserver.cpp:10: tinyformat.h: En la función miembro estática 'static const char* tinyformat::detail::FormatIterator::streamStateFromFormat(std::ostream&, unsigned int&, const char*, int, int)': tinyformat.h:785:21: advertencia: esta declaración puede fallar [-Wimplicit-fallthrough=] 785 | out.setf(estándar::ios::mayúsculas); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ tinyformat.h:786:9: nota: aquí 786 | caso 'x': caso 'p': | ^~~~ tinyformat.h:791:21: advertencia: esta declaración puede fallar [-Wimplicit-fallthrough=] 791 | out.setf(estándar::ios::mayúsculas); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ tinyformat.h:792:9: nota: aquí 792 | caso 'e': | ^~~~ tinyformat.h:797:21: advertencia: esta declaración puede fallar [-Wimplicit-fallthrough=] 797 | out.setf(estándar::ios::mayúsculas); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ tinyformat.h:798:9: nota: aquí 798 | caso 'f': | ^~~~ tinyformat.h:802:21: advertencia: esta declaración puede fallar [-Wimplicit-fallthrough=] 802 | out.setf(estándar::ios::mayúsculas); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ tinyformat.h:803:9: nota: aquí 803 | caso 'g': | ^~~~ make[2]: *** [Makefile:3910: libbitcoin_server_a-rpcserver.o] Error 1 make[2]: dejando el directorio '/usr/local/src/bitcoin-0.10.0/src' make[1]: *** [Makefile:6475: totalmente recursivo] Error 1 make[1]: dejando el directorio '/usr/local/src/bitcoin-0.10.0/src' make: *** [Makefile:569: totalmente recursivo] Error 1
Seguí las instrucciones del archivo build-unix.md y creo que el problema está relacionado con las dependencias requeridas, especialmente el paquete libboost-all-dev . Curiosamente, pude compilar todas las versiones publicadas desde la v0.20.1 hasta la 0.16.0, pero nada más antiguo que eso, usando las mismas instrucciones en build-unix.md . Si el problema realmente es libboost-all-dev , ¿cómo puedo resolverlo?
Instalé boost versión 1.57 como sugirió Pieter con:
tar --bzip2 -xf /ruta/hacia/boost_1_57_0.tar.bz2 cd boost_1_57_0/ ./bootstrap.sh --prefijo=/usr/ ./b2 sudo ./b2 instalar
Y luego, en la raíz de bitcoin, usé:
./configure --with-boost-liddir=LIB_DIR
Pero como resultado obtuve:
configure: error: ¡No se pudo encontrar una versión de la biblioteca boost_system!
Y probé diferentes caminos pero siempre obtuve el mismo resultado. ¿Es solo un problema de ruta o hay algo más?
Aparentemente arreglé el camino con:
./configure --with-boost-libdir=/usr/lib/
Pero cuando ejecuto make me sale este error .
¿Cuál es el problema?
Los dos puntos planteados en los comentarios son necesarios para compilar bitcoin core v0.10.0. Primero, la mejor manera de instalar bibliotecas Boost en Unix se describe en build_unix.md
, donde en la sección Boost tenemos
sudo su ./bootstrap.sh ./bjam instalar
pero para v0.10.0 necesitamos al menos la versión 1.57 de Boost que se puede encontrar aquí . También necesitaremos versiones anteriores de librerías OpenSSL, en este caso necesitaba los paquetes libssl-dev
versión 1.0.1f, libssl1.0.0
versión 1.0.1f y multiarch-support
versión 2.19.
Después de instalar los paquetes, podemos compilar el núcleo de bitcoin usando
./autogen.sh ./configure --sin-gui CXX="g++ -std=c++98" hacer hacer instalar
Las banderas configure
siguen los comentarios para la versión C++ y la ausencia de GUI se debe al hecho de que v0.10.0 solicitará paquetes Qt 4 para la interfaz gráfica que no pude encontrar. Una vez que se sigan esos pasos, el núcleo de bitcoin se compilará con éxito.
pieter wuille
Id_brain
pieter wuille
pieter wuille
-std=c++98
).Id_brain