最近要发版本到tx suse机器,首先在安装boost和libmemcache的时候遇到很多问题,主要是boost在完全编译的时候会报出来很多的错误,而且不能够产生静态lib文件。现在此做一记录:
1.libmemcached安装
./configure --enable-static --with-memcached --prefix=/opt/libmemcached/ --disable-sasl
http://www.eit.name/blog/read.php?216
注意各选项的意思
http://www.phpnice.com/thread-50-1-1.html
2.boost安装
从boost官网下载(这里)安装包,目前最新版本是1.48.
解压后进入目录,简单安装:
./bootstrap.sh
./bjam --prefix=/opt/boost install -q
即可。
主要问题有:
A)在输入./bootstrap.sh会报Unicode/ICU support for Boost.Regex?... not found.
解决办法见:http://hhfighting.blog.163.com/blog/static/5570032320120932829701/
摘录部分:
安装g++:sudo apt-get install g++
为了更完整的编译boost,需要下载额外的软件包,比如要完整编译boost-python库需要下载python2.6-dev,正则库regex需要 unicode/icu,boost.iostreams库需要zlib1g-dev,相关命令如下琐事:
sudo apt-get install python2.6-dev(根据当前的版本进行选择)
sudo apt-get install libicu-dev
sudo apt-get install libbz2-dev
没安装上述库的出现的错误信息:
运行 ./bootstrap.sh 出现“Unicode/ICU support for Boost.Regex?....not found”,此错误的解决办法就是安装libicu-dev。
在suse机器上可以使用zypper软件管理工具进行自动安装,如:
zypper se python-dev
zypper in xxxx
B)报warning: ISO C++ 1998 does not support ‘long long
解决办法见:https://svn.boost.org/trac/boost/ticket/3246
C)报:#error "Threading support unavaliable: it has been explicitly disabled with BOOST_DISABLE_THREADS"
解决办法见:
https://svn.boost.org/trac/boost/ticket/6165
http://blog.pinepara.info/tech/compile-passenger-with-gcc-4-dot-7/
原因如上博文所述,解决办法如下:
先定位到 Passenger 使用的 Boost 代码中的 libstdcpp3.hpp:
将第 33-34 行的:
# if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
|| defined(_GLIBCXX__PTHREADS)
替换为:
# if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
|| defined(_GLIBCXX__PTHREADS) \
|| defined(_GLIBCXX_HAS_GTHREADS) \
|| defined(_WIN32)
备注:yum安装boost时默认没有静态库,解决办法:
yum install boost boost-devel boost-doc
yum install boost-static.x86_64