码迷,mamicode.com
首页 > Web开发 > 详细

记录一些PHP7RCC1编译问题

时间:2015-08-29 18:28:14      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

1,php7rc1源码编译undefined symboles的问题

自己计划将php7环境部署到cubieboard上,懒得去找别人预编译的版本,所以动手从源码编译,中间遇到了一个小问题,此处记录一下。

PHP的build系统是典型的automake,一般简单执行configure/make/make install就可以编译安装了,但我是需要进行交叉编译的,需要额外指定工具链和目标环境参数,具体如下

1 ./configure 2     --prefix=/usr/local/php7 3     --host=arm-linux 4     CC=/home/debian/local/arm-sunxiA20-linux-gnueabi/bin/arm-sunxiA20-linux-gnueabi-gcc 5     CPP=/home/debian/local/arm-sunxiA20-linux-gnueabi/bin/arm-sunxiA20-linux-gnueabi-gcc -E 6     CXX=/home/debian/local/arm-sunxiA20-linux-gnueabi/bin/arm-sunxiA20-linux-gnueabi-g++ 7     CXXCPP=/home/debian/local/arm-sunxiA20-linux-gnueabi/bin/arm-sunxiA20-linux-gnueabi-g++ -E 8     --disable-all 9     --enable-fpm

之后make过程中出错,报告phpdbg_prompt.o有DL_LOAD/DL_FETCH_SYMBOL/DL_UNLOAD等的undefined symboles。

从名字上看很自然就知道,这是没找到动态库加载的相关函数,对源码进行一番grep之后,发现上面这几个实际上是一些动态库加载函数抽象宏,在zend_portability.h文件中进行定义的,具体是在128到163行之间,由HAVE_LIBDL宏进行开关控制。再对HAVE_LIBDL进行一番grep之后,发现没有具体定义的地方,于是自然想到手工进行添加。

简单浏览了一下Makefile,发现还挺好修改的,最后在CFLAGS_CLEAN中额外加上-DHAVE_LIBDL=1,并且在EXTRA_LIBS加上-ldl之后,clean之再重新make,问题解决。

2,模块单独编译

用过PHP的人都知道,PHP的模块是支持动态加载的,并且也支持单独编译的。我在鸟哥laruence的github上yaf的页面上找到了具体的单独编译方法,如下

1 $/path/to/phpize
2 $./configure --with-php-config=/path/to/php-config
3 $make && make install

由于是交叉编译,同样需要额外制定工具链和build目标环境参数,如下

/usr/local/php7/bin/phpize

./configure         --with-php-config=/usr/local/php7/bin/php-config         --host=arm-linux         CC=/home/debian/local/arm-sunxiA20-linux-gnueabi/bin/arm-sunxiA20-linux-gnueabi-gcc         CPP=/home/debian/local/arm-sunxiA20-linux-gnueabi/bin/arm-sunxiA20-linux-gnueabi-gcc -E         CXX=/home/debian/local/arm-sunxiA20-linux-gnueabi/bin/arm-sunxiA20-linux-gnueabi-g++         CXXCPP=/home/debian/local/arm-sunxiA20-linux-gnueabi/bin/arm-sunxiA20-linux-gnueabi-g++ -E

说明一下/usr/local/php7是上面php编译安装的目的路径,执行make install之后,生成的二进制环境和开发build环境一起被安装。在单独编译模块时,需要先编译安装php自身。

 

~~ end ~~

记录一些PHP7RCC1编译问题

标签:

原文地址:http://www.cnblogs.com/lanyuliuyun/p/4769452.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!