Erro de link ao compilar a operação atômica do gcc no modo de 32 bits

Eu tenho o seguinte programa:

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

Estou compilando este programa usando o GCC 4.2.2 no Linux rodando em uma máquina Intel multi-cpu de 64 bits:

~/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

Quando eu compilo o programa no modo de 64 bits, ele compila e liga bem:

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

Quando eu compilo no modo de 32 bits, recebo o seguinte erro:

~/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>

Embora eu nunca vá realmente executar em um processador de 32 bits, eu preciso de um executável de 32 bits para que eu possa vincular com algumas bibliotecas de 32 bits.

Minhas duas perguntas são:

Por que recebo um erro de link ao compilar no modo de 32 bits?

Existe alguma maneira de obter o programa para compilar e vincular, embora ainda seja capaz de vincular a uma biblioteca de 32 bits?

questionAnswers(2)

yourAnswerToTheQuestion