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