对sync_fetch_and_add_4的未定义引用

Met*_*est 3 c linux x86 gcc 32bit-64bit

每当我尝试在64位机器上使用__sync_fetch_and_add和-m32时,我会得到以下错误,而它正常编译64位.我正在使用gcc编译器4.1.2.这可能是什么问题,解决方案是什么?

replication.cpp:(.text+0xb3b): undefined reference to `__sync_fetch_and_add_4'
replication.cpp:(.text+0xb82): undefined reference to `__sync_fetch_and_add_4'
replication.cpp:(.text+0xcc2): undefined reference to `__sync_fetch_and_add_4'
/tmp/cc7u9FLV.o: In function `potential_barrier_leader(unsigned int, pthread_barrier_t*)':
replication.cpp:(.text+0xd3f): undefined reference to `__sync_fetch_and_add_4'
replication.cpp:(.text+0xd54): undefined reference to `__sync_fetch_and_add_4'
/tmp/cc7u9FLV.o:replication.cpp:(.text+0xdb0): more undefined references to `__sync_fetch_and_add_4' follow
collect2: ld returned 1 exit status
make: *** [all] Error 1
Run Code Online (Sandbox Code Playgroud)

Met*_*est 7

使用-march = i486标志为我做了诀窍.