¿Por qué los binarios compilados aún requieren libdb, BerkeleyDB y otros?

Compilé Bitcoin Core en una Raspberry Pi desde la fuente después de instalar todas las dependencias necesarias, incluidas todas las libboost y BerkeleyDB. Esa aplicación funciona bien y bitcoindvive felizmente en/usr/local/bin

Así que intenté copiar bitcoindy los otros ejecutables de Bitcoin de ese directorio a una nueva Raspberry Pi con un nuevo sistema operativo limpio, y las aplicaciones no se ejecutaron. Recibí errores hasta que instalé libboost y BerkeleyDB y todas las demás dependencias en esa segunda computadora también.

¿Pensé que el proceso de compilación hizo un programa ejecutable independiente? ¿Por qué el binario compilado aún requería estas bibliotecas compartidas?

Como, los ejecutables están disponibles para descargar desde bitcoin.org que son realmente independientes. ¿Cómo puedo compilar desde la fuente un ejecutable tan independiente como estos?

Los ejecutables aún pueden requerir que las bibliotecas estén disponibles. Es posible compilar (o en realidad vincular) esas bibliotecas en el ejecutable mismo para que el ejecutable se vuelva realmente independiente. Esto se llama binario enlazado estáticamente. En el cajero automático del teléfono, no puedo buscar detalles.

Respuestas (1)

El proceso de compilación estándar no "incluye" dependencias estáticas en el archivo ejecutable. Se refiere a la libdb instalada, boost, etc.

Esto (bibliotecas de enlaces dinámicos) es un concepto eficiente. De lo contrario, cada ejecutable que use, como ejemplo, boost requeriría incluir toda la dependencia de boost en el binario.

Los binarios "oficiales" de Bitcoin-Core que se ofrecen a través de bitcoin.org son ejecutables compilados estáticos (lo incluyen todo). Esto es necesario para obtener independencia de Linux/distribución, así como para construir completamente los binarios deterministas (seguridad/integridad).

Puede construir un bitcoind vinculado estático usted mismo siguiendo el proceso de construcción "depende": https://github.com/bitcoin/bitcoin/tree/master/depends