Error de enlace al compilar la operación atómica de gcc en modo de 32 bits

Tengo el siguiente programa:

~/test> cat test.cc
int main()
{
  int i = 3;
  int j = __sync_add_and_fetch(&i, 1);
  return 0;
}

Estoy compilando este programa utilizando GCC 4.2.2 en Linux que se ejecuta en una máquina Intel de múltiples bits y 64 bits de CPU:

~/test> uname --all
Linux doom 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:56:44 EST 2007 x86_64 x86_64 x86_64 GNU/Linux

Cuando compilo el programa en modo de 64 bits, compila y enlaza bien:

~/test> /share/tools/gcc-4.2.2/bin/g++ test.cc
~/test>

Cuando lo compilo en modo de 32 bits, aparece el siguiente error:

~/test> /share/tools/gcc-4.2.2/bin/g++ -m32 test.cc
/tmp/ccEVHGkB.o(.text+0x27): In function `main':
: undefined reference to `__sync_add_and_fetch_4'
collect2: ld returned 1 exit status
~/test>

Aunque en realidad nunca correré en un procesador de 32 bits, sí necesito un ejecutable de 32 bits para poder enlazar con algunas bibliotecas de 32 bits.

Mis 2 preguntas son:

¿Por qué recibo un error de enlace cuando compilo en modo de 32 bits?

¿Hay alguna forma de hacer que el programa se compile y se vincule, al mismo tiempo que se puede vincular con una biblioteca de 32 bits?

Respuestas a la pregunta(2)

Su respuesta a la pregunta