When the package is recompiled from source package without changes, it works because GCC 4.6.1 on i386 generates x87 instructions instead of SSE2 instructions. In general, GCC 4.6 defaults to "-march=native", so if the 32bit binary was generated on a 64bit system using "gcc -m32" without specifying "-march", it defaulted to compiling a binary for a core2/athlon64 in 32bit compatibility mode, not for a 32bit only CPU which does not support SSE2. A 32bit-only Pentium4 would run such a binary, but a Pentium3 won't. I suggest specifying -march=i686 and -mfpmath=387 to disable generation of SSE instructions. Performance critical code that uses hand-coded SSE (asm or intrinsics) uses run time cpu detection anyway and should be compiled with separate flags before being linked into a "i386" binary.
When the package is recompiled from source package without changes, it works because GCC 4.6.1 on i386 generates x87 instructions instead of SSE2 instructions. In general, GCC 4.6 defaults to "-march=native", so if the 32bit binary was generated on a 64bit system using "gcc -m32" without specifying "-march", it defaulted to compiling a binary for a core2/athlon64 in 32bit compatibility mode, not for a 32bit only CPU which does not support SSE2. A 32bit-only Pentium4 would run such a binary, but a Pentium3 won't. I suggest specifying -march=i686 and -mfpmath=387 to disable generation of SSE instructions. Performance critical code that uses hand-coded SSE (asm or intrinsics) uses run time cpu detection anyway and should be compiled with separate flags before being linked into a "i386" binary.
According to: https:/ /help.ubuntu. com/11. 04/installation -guide/ i386/hardware- supported. html , i686 with cmov is now required, so march should be set for that. I could not find the same page for ubuntu 11.10, but I hope it's the same.