d.php xfso_记一次自写php扩展的安装

环境:

centos 6.5

php7.0

gcc 4.9

cmake 3.5.2

艰辛的过程

简单介绍一下这个扩展,这个扩展是基于phpx的架构编写的,稍微修改过源码。p.s.由于源码的编写并没有怎么参与,此处只介绍安装过程中的坑。

首先,由于与开发环境不一致,很多工具的版本对不上,于是,需要各种升级。

1、gcc的升级

yum install gcc

yum install gcc-c++

wget http://gcc.skazkaforyou.com/releases/gcc-4.9.1/gcc-4.9.1.tar.gz

tar -xf gcc-4.9.1.tar.gz

cdgcc-4.9.1./contrib/download_prerequisites # 这个脚本会自动帮你下载所需要的依赖文件和库

# 建立输出目录,将所有的中间文件都放到该目录mkdirgcc_temp

cd gcc_temp

../configure --enable-checking=release --enable-languages=c,c++ --disable-multilibmake & make install

这个过程很漫长。。。

2、cmake的升级

wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

tar xvf cmake-3.5.2.tar.gz

cd cmake-3.4.3./bootstrap --prefix=/usr #这一步很关键,如果没有指定prefix,后面使用时会报错Could not find CMAKE_ROOT

make# 此处遇坑,下文开始解释

make install

首先,由于上面gcc的安装没有指定安装路径,默认是/usr/local下,所以当执行到make步骤的时候提示:

The C compiler identification is unknown

此时,及时你设置了/etc/profile的PATH也会报同样的错误,正确的方式是创建软连接:

ln -s /usr/local/bin/gcc /usr/bin/gcc

ln-s /usr/local/bin/c++ /usr/bin/c++ln-s /usr/local/bin/g++ /usr/bin/g++

ln -s /usr/local/bin/gcc /usr/bin/cc # 此处的CC为后边cmake自写扩展时候用到的,其实就是指向了gcc

报错提示2:

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found

[root@localhost cmake-2.8.12.2]# strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

GLIBCXX_3.4

GLIBCXX_3.4.1

GLIBCXX_3.4.2

GLIBCXX_3.4.3

GLIBCXX_3.4.4

GLIBCXX_3.4.5

GLIBCXX_3.4.6

GLIBCXX_3.4.7

GLIBCXX_3.4.8

GLIBCXX_3.4.9

GLIBCXX_3.4.10

GLIBCXX_3.4.11

GLIBCXX_3.4.12

GLIBCXX_3.4.13

GLIBCXX_FORCE_NEW

GLIBCXX_DEBUG_MESSAGE_LENGTH

[root@localhost cmake-2.8.12.2]# strings /usr/local/lib64/libstdc++.so.6.0.20|grep GLIBCXX

GLIBCXX_3.4

GLIBCXX_3.4.1

GLIBCXX_3.4.2

GLIBCXX_3.4.3

GLIBCXX_3.4.4

GLIBCXX_3.4.5

GLIBCXX_3.4.6

GLIBCXX_3.4.7

GLIBCXX_3.4.8

GLIBCXX_3.4.9

GLIBCXX_3.4.10

GLIBCXX_3.4.11

GLIBCXX_3.4.12

GLIBCXX_3.4.13

GLIBCXX_3.4.14

GLIBCXX_3.4.15

GLIBCXX_3.4.16

GLIBCXX_3.4.17

GLIBCXX_3.4.18

GLIBCXX_3.4.19

GLIBCXX_3.4.20

GLIBCXX_FORCE_NEW

GLIBCXX_DEBUG_MESSAGE_LENGTH

这里该有的都有了,把这份软链到正确的地方:

[root@localhost cmake-2.8.12.2]# cp /usr/local/lib64/libstdc++.so.6.0.20 /usr/lib64/

[root@localhost cmake-2.8.12.2]# cd /usr/lib64/

[root@localhost lib64]# rm -f libstdc++.so.6

[root@localhost lib64]# ln -s libstdc++.so.6.0.20 libstdc++.so.6

[root@localhost lib64]# ll libstdc*

lrwxrwxrwx. 1 root root 19 5月 12 13:34 libstdc++.so.6 -> libstdc++.so.6.0.20

-rwxr-xr-x. 1 root root 987096 11月 22 02:08 libstdc++.so.6.0.13

-rwxr-xr-x. 1 root root 6700716 5月 12 13:33 libstdc++.so.6.0.20

(转)

至此,cmake可以成功安装

3、安装扩展

首先编译安装phpx

git clone https://github.com/swoole/PHP-X

cd PHP-X

cmake-DPHP_CONFIG_DIR=/usr/local/bin -DCMAKE_INSTALL_PREFIX=./output

# 接下来报错,后边解释。。。make

make install

由于编译phpx的时候需要ccache支持,所以需要安装cache,否则,cmake可以通过,但是make报错

wget https://www.samba.org/ftp/ccache/ccache-3.3.4.tar.gz

tar -zxf ccache-3.3.4.tar.gz

cd ccache-3.3.4./configure --prefix=/usrmake && make install

安装完毕后,在make && make install就可以了

至此,标准流程安装结束

4、自定义的php扩展安装

这个安装比较简单了,由于在开发的时候把源码已经打包成共享库了(.so文件),此时只需要:

ldd 扩展.so 看下该共享文件所需的共享库有没有无效的,如果有无效的,就将其指向所需的添加到指向目录。

最后,安装完毕,php扩展正常运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值