All 64-bit architectures support the development of 64-bit objects. However, the level of support for 32-bit compiling depends on the architecture. These are the various implementation options for the tool chain from GCC (GNU Compiler Collection) and Binutils, which include the assembler as and the linker ld:
Both 32-bit and 64-bit objects can be generated with a biarch development tool chain. The compiling of 64-bit objects is the default on almost all platforms. 32-bit objects can be generated if special flags are used. This special flag is -m32 for GCC (-m31 for s390x). The flags for the binutils are architecture-dependent, but GCC transfers the correct flags to linkers and assemblers. A biarch development tool chain currently exists for sparc64 (supports sparc and sparc64 development), for amd64 (supports development for x86 and amd64 instructions), for s390x, and for ppc64. 32-bit objects are normally created on the ppc64 platform. The -m64 flag must be used to generate 64-bit objects.
SUSE does not support the direct development of 32-bit software on all platforms. To develop applications for x86 under ipf, use the corresponding 32-bit version of SUSE LINUX Enterprise Server.
All header files must be written in an architecture-independent form. The installed 32-bit and 64-bit libraries must have an API (application programming interface) that matches the installed header files. The normal SUSE environment is designed according to this principle. In the case of manually updated libraries, resolve these issues yourself.