CentOS安装php v8js(亲测)

CentOS release 5.11 (Final),CentOS release 6.6 (Final) x64测试通过。

gcc版本,glibc版本,libstdc++.so.6版本,gnu-binutils版本,tar版本,python版本,re2c版本都要对的上才行,最后弄上已经要吐血的,需要glibc高版本的话是搞不了的,硬要搞的话风险太大。

v8js目前最新版0.1.5beta,在CentOS5上是搞不了的,各种版本依赖没法弄,所以都用旧版本。

版本:
gcc-4.4.7,php-5.4,v8-3.15.5,python-2.7

编译libv8.so
wget https://github.com/v8/v8-git-mirror/archive/3.15.5.tar.gz
cd v8-git-mirror-3.15.5/
make dependencies
make ia32.release library=shared -j4

经过测试libv8.so和头文件必须放到标准路径下,否则configure或make过不去,谁有更好的方法可以发评论说一下。
cp /root/software/v8-git-mirror-3.15.5/out/ia32.release/lib.target/libv8.so /usr/lib/
cp /root/software/v8-git-mirror-3.15.5/include/v8* /usr/include/

直接这么干就行:pecl install v8js-0.1.3

注意:

安装gcc的时候contrib/download_prerequisites可以自动下载需要的依赖。
如果是64位系统,需要yum install glibc-devel.i686 libstdc++.i686等。
make -j4是使用4个逻辑CPU编译,可以加快编译速度,但是可能不稳定发生internal error之类的,去掉-j4即可。亲身体会不要用-j参数,很容易遇到恶心问题。
64位系统如果是yum装的php则php是64位的,需要编译64位的libv8.so(make x64.release library=shared)。

参考:
https://code.google.com/p/v8-wiki/wiki/BuildingWithGYP
https://github.com/dreamfactorysoftware/dsp-core/wiki/Installing-V8js

Makefile选项CFLAGS,LDFLAGS,LIBS

CFLAGS 表示用于 C 编译器的选项,
CXXFLAGS 表示用于 C++ 编译器的选项。
这两个变量实际上涵盖了编译和汇编两个步骤。

CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把以前安装的包的include目录加入到该变量中来。

LDFLAGS:gcc 等编译器会用到的一些优化参数,也可以在里面指定库文件的位置。用法:LDFLAGS=-L/usr/lib -L/path/to/your/lib。每安装一个包都几乎一定的会在安装目录里建立一个lib目录。如果明明安装了某个包,而安装另一个包时,它愣是说找不到,可以抒那个包的lib路径加入的LDFALGS中试一下。

LIBS:告诉链接器要链接哪些库文件,如LIBS = -lpthread -liconv

简单地说,LDFLAGS是告诉链接器从哪里寻找库文件,而LIBS是告诉链接器要链接哪些库文件。不过使用时链接阶段这两个参数都会加上,所以你即使将这两个的值互换,也没有问题。

有时候LDFLAGS指定-L虽然能让链接器找到库进行链接,但是运行时链接器却找不到这个库,如果要让软件运行时库文件的路径也得到扩展,那么我们需要增加这两个库给"-Wl,R":

LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib

如果在执行./configure以前设置环境变量export LDFLAGS="-L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib" ,注意设置环境变量等号两边不可以有空格,而且要加上引号(shell的用法)。那么执行configure以后,Makefile将会设置这个选项,链接时会有这个参数,编译出来的可执行程序的库文件搜索路径就得到扩展了。

VPN 隧道协议PPTP、L2TP、IPSec和SSLVPN的区别

VPN (虚拟专用网)发展至今已经不在是一个单纯的经过加密的访问隧道了,它已经融合了访问控制、传输管理、加密、路由选择、可用性管理等多种功能,并在全球的 信息安全体系中发挥着重要的作用。也在网络上,有关各种VPN协议优缺点的比较是仁者见仁,智者见智,很多技术人员由于出于使用目的考虑,包括访问控制、 安全和用户简单易用,灵活扩展等各方面,权衡利弊,难以取舍;尤其在VOIP语音环境中,网络安全显得尤为重要,因此现在越来越多的网络电话和语音网关支 持VPN协议。
继续阅读