Estoy tratando de compilar v0.8.6 del cliente principal desde la fuente , para comparar el rendimiento de IDB (descarga inicial de blockchain) entre versiones.
Creé una nueva máquina Ubuntu Xenial 16.04 en Amazon EC2. Luego ejecuté los siguientes comandos (que fueron suficientes para la versión 0.9.3 y posteriores):
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install build-essential autoconf libboost-all-dev \
libssl-dev libtool pkg-config libevent-dev
Además para esta versión específica ejecuté:
sudo apt-get install libdb++-dev libminiupnpc-dev
Luego revisé la fuente y comencé la compilación:
git clone https://github.com/bitcoin/bitcoin.git
cd bitcoin
git checkout v0.8.6
cd src/
make -f makefile.unix
Solo estoy interesado en ejecutar headless bitcoind
, pero no estoy seguro de si ya estaba separado de la interfaz de usuario en ese lanzamiento.
Obtuve el siguiente error:
rpcrawtransaction.cpp:241:77: required from here
/usr/include/boost/variant/get.hpp:178:5: error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’
BOOST_STATIC_ASSERT_MSG(
^
makefile.unix:172: recipe for target 'obj/rpcrawtransaction.o' failed
make: *** [obj/rpcrawtransaction.o] Error 1
Curiosamente, 0.7, 0.6 y 0.5 se compilan con éxito, aunque se atascan durante IDB, por lo que tal vez la compilación falló silenciosamente. Voy a hacer una publicación separada para esos más tarde.
Sospecho que necesito instalar algunas versiones muy específicas de dependencias, pero no estoy seguro de cuál y cómo hacerlo. No he usado Linux en años.
Todavía tengo la VM, por lo que puedo proporcionar más detalles si es necesario.
Estoy abierto a enfoques alternativos, incluso usando una máquina virtual de Windows :-)
Puede usar el sistema de compilación gitian. Las instrucciones para construir 0.8.x con gitian están disponibles aquí: https://github.com/bitcoin/bitcoin/tree/0.8/contrib/gitian-descriptors y aquí: https://github.com/bitcoin/bitcoin/blob/ 0.8/doc/release-process.md . El uso de gitian debería proporcionarle exactamente los mismos binarios que los que se publicaron.
sudo /usr/sbin/kvm-ok INFO: Your CPU does not support KVM extensions KVM acceleration can NOT be used
parece que tendría que usar algo elegante como Ravello , ¿o me estoy perdiendo algo?make-base-vm
comandos con la --lxc
opción también.Nick ODell me indicó la solución :
Editar rpcrawtransaction.cpp
y cambiar:
const CScriptID& hash = boost::get<const CScriptID&>(address);
A:
const CScriptID& hash = boost::get<CScriptID>(address);
Esto fue suficiente para que compilara.
Además, apliqué el parche OpenSSL que señaló Pieter Wuille .
Tiene que hacer esto manualmente porque depends/packages/openssl.mk
ya no existe y el nombre y la firma de la función han cambiado. Simplemente abra src/key.cpp
y reemplace todo lo que esté dentro de los CKey::Verify
paréntesis de función con esta nueva versión .
Más de 210 000 bloques sincronizados hasta ahora, así que asumo que esto funcionó.
Nick ODell
Sjors Provoost
libboost-all-dev
versión 1.58.0. Sin embargo, podría intentar el enfoque gitian primero.pieter wuille
Sjors Provoost
pieter wuille
Sjors Provoost
LeanMan
LeanMan