今天在一台主機上編譯 memcached 的用戶端庫 libmemcached,./configure 配置結果如下
---
Configuration summary for libmemcached version 0.40
* Installation prefix: /usr/local
* System type: pc-linux-gnu
* Host CPU: i686
* C Compiler: gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
* Assertions enabled: yes
* Debug enabled: no
* Warnings as failure: no
---
在運作編譯後,出現如下錯誤
clients/ms_conn.o: In function `ms_get_udp_request_id':
/root/libmemcached-0.40/clients/ms_conn.c:194: undefined reference to `__sync_fetch_and_add_4'
clients/ms_conn.o: In function `ms_reconn_socks':
/root/libmemcached-0.40/clients/ms_conn.c:1051: undefined reference to `__sync_fetch_and_add_4'
clients/ms_conn.o: In function `ms_reconn':
/root/libmemcached-0.40/clients/ms_conn.c:919: undefined reference to `__sync_fetch_and_add_4'
/root/libmemcached-0.40/clients/ms_conn.c:956: undefined reference to `__sync_fetch_and_add_4'
clients/ms_thread.o: In function `ms_setup_thread':
/root/libmemcached-0.40/clients/ms_thread.c:225: undefined reference to `__sync_fetch_and_add_4'
clients/ms_thread.o:/root/libmemcached-0.40/clients/ms_thread.c:208: more undefined references to `__sync_fetch_and_add_4' follow
collect2: ld returned 1 exit status
估計是伺服器 i386 和 i686 的關系,Google 後通過配置指令解決
./configure --disable-64bit CFLAGS="-O3 -march=i686"