I'm running a 32-bit chroot on an x86_64 machine. That is, the kernel can execute 64 and 32 bit binaries, but everything has been compiled with -m32 within the chroot. All the installed packages including gcc and glibc have just been recompiled with -m32 with the compilation done within the chroot. (They were formerly compiled with -march=i486.) OpenSSL configure somehow decides to build for x86_64 anyway and forces -m64 into CFLAGS, resulting in a gcc error.
Configured for linux-x86_64.
making all in crypto...
make[1]: Entering directory `/usr/src/openssl-0.9.8g/crypto'
( echo "#ifndef MK1MF_BUILD"; \
echo ' /* auto-generated by crypto/Makefile for crypto/cversion.c */';
\
echo ' #define CFLAGS "gcc -O -march=pentium3m -pipe -DPIC -fPIC -O3
-fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H
-m64 -DL_ENDIAN -DTERMIO -Wall -DMD32_REG_T=int -DMD5_ASM"'; \
echo ' #define PLATFORM "linux-x86_64"'; \
echo " #define DATE \"`LC_ALL=C LC_TIME=C date`\""; \
echo '#endif' ) >buildinf.h
gcc -I. -I.. -I../include -O -march=pentium3m -pipe -DPIC -fPIC -O3 -fPIC
-DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64
-DL_ENDIAN -DTERMIO -Wall -DMD32_REG_T=int -DMD5_ASM -c -o cryptlib.o
cryptlib.c
cryptlib.c:1: sorry, unimplemented: 64-bit mode not compiled in
make[1]: *** [cryptlib.o] Error 1
make[1]: Leaving directory `/usr/src/openssl-0.9.8g/crypto'
make: *** [build_crypto] Error 1
Full configure and compile log attached.
openssl-compile.log
Description: Binary data
