====== Architettura multipla su Debian ======
Con questo sistema dovrebbe essere possibile **eseguire un binario i386 su una macchina amd64**. Utile aad esempio per eseguire un software non libero, distribuito solo per una architettura.
Questo sistema ha funzionato su una **Debian Stretch**, ma dovrebbe funzionare ugualmente su una 8 Jessie.
Anzitutto si verifica quale architettura è installata e quali architetture "straniere" sono state installate.
dpkg --print-architecture
dpkg --print-foreign-architectures
Supponendo che si sia installata la amd64, per aggiungere il supporto base a i386 si esegue:
dpkg --add-architecture i386
apt-get update
apt-get install libstdc++6:i386
Da questo punto in poi l'eseguibile i386 dovrebbe partire, eventuali librerie mancanti si scoprano con **ldd** e **strace**.
===== Cross compilazione =====
Come fare per **compilare un software i386** su una macchina **amd64**? Su una Debian moderna (ad esempio una Debian 9 Stretch) dovrebbe essere sufficiente installare i pacchetti:
apt-get install gcc-multilib g++-multilib
Ovviamente sarà necessario installare gli header delle librerie per l'architettura target, ad esempio:
apt-get install libssl-dev:i386
Poi, a seconda dell'ambiente di configurazione/compilazione si dovrà settare alcune variabili di ambiente. Ad esempio:
export CFLAGS='-m32'
export CXXFLAGS='-m32'
export LDFLAGS='-m32'
Oppure per l'ambiente di configurazione CMake:
cmake -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_SHARED_LINKER_FLAGS=-m32 /path/to/source/