$ gcc test.c -o testc
$ файл testc
testc: 64-розрядний виконуваний файл LSB ELF, x86-64, версія 1 (SYSV), динамічно пов'язаний (використовує спільні лібри), для GNU / Linux 2.6.9, не позбавлений
$ ldd testc
linux-vdso.so.1 => (0x00007fff227ff000)
libc.so.6 => /lib64/libc.so.6 (0x000000391f000000)
/lib64/ld-linux-x86-64.so.2 (0x000000391ec00000)
$ gcc -m32 test.c -o testc
$ файл testc
testc: ELF 32-бітний виконуваний LSB, Intel 80386, версія 1 (SYSV), динамічно пов'язаний (використовує спільні лібри), для GNU / Linux 2.6.9, не позбавлений
$ ldd testc
linux-gate.so.1 => (0x009aa000)
libc.so.6 => /lib/libc.so.6 (0x00780000)
/lib/ld-linux.so.2 (0x0075b000)
Якщо коротко: використовуйте -m32
прапор для складання 32-розрядного двійкового файлу.
Також переконайтеся, що у вас встановлені 32-бітні версії усіх необхідних бібліотек (у моєму випадку все, що мені потрібно для Fedora, було glibc-devel.i386)