Menelik Logo

Compilación Cruzada de Menelik Core

Menelik Core se puede compilar en Linux para todos los demás sistemas host compatibles. Esto se hace cambiando el parámetro HOST al crear las dependencias y luego especificando otro directorio --prefix al compilar Menelik.

Las siguientes instrucciones se han probado en Debian Stretch y Ubuntu Bionic.

Compilación Cruzada de MacOSX

La compilación cruzada con MacOSX requiere la instalación de algunos paquetes adicionales:

$ sudo apt-get install python3-setuptools libcap-dev zlib1g-dev libbz2-dev

Además, el SDK de MacOSX debe descargarse y extraerse manualmente:


$ mkdir -p depends/sdk-sources
$ mkdir -p depends/SDKs
$ curl https://bitcoincore.org/depends-sources/sdks/MacOSX10.11.sdk.tar.gz -o depends/sdk-sources/MacOSX10.11.sdk.tar.gz
$ tar -C depends/SDKs -xf depends/sdk-sources/MacOSX10.11.sdk.tar.gz
    

Al crear las dependencias, como se describe en build-generic, utilice:

$ make HOST=x86_64-apple-darwin14 -j4

Al construir Menelik Core, utilice:

$ ./configure --prefix=`pwd`/depends/x86_64-apple-darwin14

Compilación Cruzada de Windows de 64 bits

Los pasos que se indican a continuación se pueden realizar en Ubuntu (incluso en una máquina virtual) o en WSL. El sistema de dependencias también funcionará en otras distribuciones de Linux; sin embargo, los comandos para instalar la cadena de herramientas serán diferentes.

Instalación de Dependencias Generales:


$ sudo apt update
$ sudo apt upgrade
$ sudo apt install build-essential libtool autotools-dev automake pkg-config bsdmainutils curl git python3 cmake
    

Una cadena de herramientas de host (build-essential) es necesaria porque algunos paquetes de dependencia necesitan crear utilidades de host que se utilizan en el proceso de compilación. Consulte dependencies.md para obtener una descripción completa.

Si desea crear el instalador de Windows, make deploy necesitará NSIS:

$ sudo apt install nsis

Adquiera la fuente de la forma habitual:


$ git clone https://github.com/MenelikCoin/menelik
$ cd menelik
    

Compilación para Windows de 64 bits

El primer paso es instalar la cadena de herramientas de compilación cruzada mingw-w64:

$ sudo apt install g++-mingw-w64-x86-64

Para Ubuntu Bionic 18.04:

$ sudo update-alternatives --config x86_64-w64-mingw32-g++ # Set the default mingw32 g++ compiler option to posix.

Una vez instalada la cadena de herramientas, los pasos de compilación son comunes:

Nota: para WSL, la ruta de origen de Menelik Core DEBE estar en algún lugar del sistema de archivos de montaje predeterminado, por ejemplo, /usr/src/menelik, y no en /mnt/d/. Si este no es el caso, los scripts de autoconf de dependencia fallarán. Esto significa que no puede usar un directorio que se encuentre directamente en el sistema de archivos de Windows del host para realizar la compilación.

Construir usando:


$ PATH=$(echo "$PATH" | sed -e 's/:\/mnt.*//g') # strip out problematic Windows %PATH% imported var
$ cd depends
$ make HOST=x86_64-w64-mingw32
$ cd ..
$ ./autogen.sh # not required when building from tarball
$ CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure --prefix=/
$ make
    

Depende del Sistema

Para obtener más documentación sobre el sistema de dependencias, consulte README.md en el directorio de dependencias.

Compilación Cruzada ARM-Linux

La compilación cruzada con ARM-Linux requiere la instalación de algunos paquetes adicionales:

$ sudo apt-get install g++-arm-linux-gnueabihf

Al crear las dependencias, como se describe en build-generic, utilice:

$ make HOST=arm-linux-gnueabihf -j4

Al construir Menelik Core, utilice:

$ ./configure --prefix=`pwd`/depends/arm-linux-gnueabihf

Notas Adicionales

A partir de Ubuntu Xenial 16.04, tanto los paquetes Mingw-w64 de 32 como de 64 bits instalan dos opciones de compilador diferentes para permitir la elección entre subprocesos posix o win32. La opción predeterminada es win32 threads, que es la más eficiente, ya que dará como resultado un código binario que se vincula directamente con kernel32.lib de Windows. Desafortunadamente, los encabezados necesarios para admitir subprocesos win32 entran en conflicto con algunas de las clases de la biblioteca estándar de C++11, en particular std::mutex. No es posible compilar el código de Menelik Core utilizando la versión win32 de los compiladores cruzados Mingw-w64 (al menos no sin modificar los encabezados en el código fuente de Menelik Core).