====== 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/