32-bit package guidelines - ArchWiki

Jump to content

Legacy 32-bit software can be built and installed on machines of another native architecture, such as x86_64. This article explains the production and conventions of such packages.

## Package naming

- Prefix 32-bit versions of native packages with lib32-.

- Suffix packages that utilize the x32 ABI with -x32.

- Package decriptions should distinguish these from native counterparts, ie `pkgdesc+=" (32-bit)"`.

## Variables and parameters

### lib32

Specify these bash variables in a PKGBUILD to tell the compiler to output 32-bit code:

    export CFLAGS+=" -m32"
    export CXXFLAGS+=" -m32"
    export LDFLAGS+=" -m32"
    export PKG_CONFIG_PATH='/usr/lib32/pkgconfig'

#### File placement

Ensure lib32 package files do not conflict with native package files and include all necessary files, such as architecture-specific includes. For example, if a package builds using GNU Autoconf, specify the following to `configure`:

    --program-suffix="-32" \
    --lib{exec,}dir=/usr/lib32 \
    --includedir=/usr/include/"$pkgbase"32 \
    --build=i686-pc-linux-gnu

### x32

This section is being considered for removal.

Reason: This kind of 32-bit packaging is not available on supported kernels since 2014. (Discuss in Talk:32-bit package guidelines#-x32?)
Category:

- Arch package guidelines

Hidden category:

- Sections flagged with Template:Remove