All 64-bit architectures support the development of 64-bit objects. 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 compilation 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 generating s390 binaries). 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
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 Linux Enterprise does not support the direct development of 32-bit software on all platforms. To develop applications for x86 under ia64, use the corresponding 32-bit version of SUSE Linux Enterprise.
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 Linux Enterprise environment is designed according to this principle. In the case of manually updated libraries, resolve these issues yourself.