在前文中,我提到了icc的好. 不过,说归说,没有实现体验过,还真不知道它到底怎么样.
前一段时间自己试验了一下,用icc编译了amp.然后上面跑vbb论坛.发现性能有比较大的提升.而且一直很稳定,没有出过问题.
现在在这里记下来:
第一步,先编译mysql.
为什么是mysql呢? 因为,它的编译参数比较麻烦(不能使用ipo),而且它的编译成功/失败和后面两个没有直接的关系...再说了,我就喜欢先编译它
1. 下载mysql的源代码:
CODE:
-
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.20.tar.gz/from/http://mysql.he.net/
-
tar -xzf mysql-5.0.20.tar.gz
-
cd mysql-5.0.20
2. 使用configure脚本来配置编译参数:
CODE:
-
CC=icc \
-
CXX=icpc \
-
CFLAGS="-O3 -ip -cxxlib-icc -i-static -no-gcc -mp -restrics " \
-
CXXFLAGS="-O3 -ip -cxxlib-icc -i-static -no-gcc -mp -restrics" \
-
CPPFLAGS="-O3 -ip -cxxlib-icc -i-static -no-gcc -mp -restrics" \
-
LD=xild \
-
AR=xiar \
-
LDFLAGS="-cxxlib-icc -i-static" \
-
CXXLDFLAGS="-cxxlib-icc -i-static" \
-
./configure \
-
--prefix=/home/ext/usr/local/mysql \
-
--sysconfdir=/home/ext/etc \
-
--libexecdir=/home/ext/usr/local/mysql/bin \
-
--enable-assembler \
-
--with-mysqld-ldflags=-all-static \
-
--without-debug \
-
--with-charset=utf8 \
-
--with-extra-charset=all \
-
--with-zlib-dir=/usr \
-
--with-big-tables \
注意: icc提供了一个重要的功能就是 ipo ,可以把大多数的函数内链化 (inline).通常情况下面可以提升程序的性能,不过带来的问题就是编译后的binary要大一些 ( 不过现在硬盘这么大,谁在乎啊).不过mysql不能使用这个参数,可能会导致一些问题(不过你可以自己试试). 还有就是 -no-gcc 选项, 这个一定要带上,否则编译会出错(我也不知道为什么)...
3. 然后呢,就是make了和install了.
CODE:
-
make
-
make install
-
嗯.这个就是我编译的步骤了,我自己试,是成功的.不过我不敢打包票.如果出错了,尝试去掉一些icc的编译参数再重新编译.

2 CommentsAdd your own
有试过编译php吗?我编译php5.16后,php 不能加载eacc和zend模块,不知道怎么办?
可能是你用了worker-mpm
Add a New Comment