こちらの記事で紹介している通り、nginxのコンパイルを行おうとmakeしたときに以下のエラーが出てきた。
ngx_pagespeed-release-1.6.29.5-beta/src/ngx_base_fetch.cc:185: undefined reference to `__sync_add_and_fetch_4'
collect2: ld returned 1 exit status
make[1]: *** [objs/nginx] Error 1
というのも、今回はyumでインストールしたnginxのconfigureオプションを nginx -V で確認してから、同様のconfigureオプションを指定してソースからコンパイルしようと思っていたのだが、yumでインストールされているnginxがコンパイルされている環境でのCPUタイプと、今回ソースからコンパイル使用としている環境のCPUタイプが異なるために発生した模様。
undefined reference to `__sync_add_and_fetch_4′
情報は以下のサイトから確認できた。
undefined reference to `__sync_add_and_fetch_4′ when compiling Redis | ESchrade
The solution is to explicitly declare the CPU type to make this work.
ということで、現在のCPUタイプを確認してみる。
[root@vps1 ~]# uname -m
i686
[root@vps1 ~]#
yumでインストールしたnginxを用いてnginx -Vをしたときに指定されているconfigureオプションは以下のとおり
省略 --with-cc-opt='-O2 -g -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables' 省略
ここの -march=i386 を -march=i686 にすることでmakeは無事終了しました。
おしまいヽ(´ー`)ノ
コメント