记录一些PHP7RCC1编译问题

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 ~~

时间: 2024-08-26 16:20:55

记录一些PHP7RCC1编译问题的相关文章

CEF3.2623使用记录:windows编译

CEF3.2623使用记录:windows编译 1:cef3.2623下载地址 2623是cef3最后一个支持xp系统的版本,且可以支持html的audio标签,可以用作对html音频的处理下载地址为 https://bitbucket.org/chromiumembedded/cef/branch/2623.下载win32版本的cef3.2623压缩包内容如下图所示: 2:cmake编译器 编译cef3需要用到cmake编译器,从官方下载,地址为https://cmake.org/downlo

记录下MoKee编译过程

纯属记录帖 关注和了解这个rom有段时间了. 最近有需要了解odex,折腾了几天还是在坑里. 索性,先编译下MoKee看看. 之前make过 4.2 和 5.1 ,刷到模拟器和N5里. 编译教程可以参考 官网说明: http://bbs.mfunz.com/thread-653126-1-1.html 然后 准备工作大致分为: 1. linux物理机 (没在虚拟机里面搞) 2.环境准备 ,JDK ,各种依赖库 (官方直接给了集合,这个不错,之前mark 5.1 哪里出错再追加,折腾很久) 3.

记录windows下编译chromium,备忘

编译windows下chromium,时间:20170619, 官方地址:https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md 一. 系统要求: 1. 64位机器,至少8GB的内存,推荐16GB以上.(我用的Win10 64位虚拟机,内存按照8G来的): 2. 至少100GB的硬盘存储空间,格式为NTFS.FAT32不支持大于4GB的文件,而在git下载时的文件可能会有

记录一次通过反编译处理线上问题

问题: 研发公司单独做了控制关停接口,因为他们域名未备案缘故导致接口无法正常调用,游戏不能正常登陆.但是对方因为合作终止暂时不能积极的处理.只能自己尝试编译处理 解决办法:找对对应的接口文件,尝试重新编译解决 1.一开始不知道游戏里为什么卡在登陆上,尝试抓包看信息手机登陆通过fiddler抓包工具在,可以看到一个登陆链接报错500------->问题引起的原因是用户验证登陆返回500,由于调用SDK不能请求到接口返回,这个SDK被研发那边私自接了控制SDK的代码.http://www.test.

[java问题记录]IntelliJ Idea编译报错:javacTask: 源发行版 1.8 需要目标发行版 1.8

原因:不详,可能是升级idea造成的,之前打过一个升级补丁: 错误信息: Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8Information:2017/1/24 11:27 - Compilation completed with 1 error and 0 warnings in 5s 873msInformation:java: Errors occurred while compiling module 'java-lessions'I

记录个人php编译安装

安装之前: yum -y install curl-devel libxml2-devel libpng-devel libmcrypt-devel libjpeg-devel openssl-devel wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2.5.7.tar.gz tar -zxvf libmcrypt-2.5.7.tar.gz cd libmcrypt-2.5.7  ./configu

Windows下编译protobuf v3.3.0

一:概述 关于 protobuf 在此不再多说,此处记录下成功编译步骤以备日后查阅.注意:本文并不是使用cmake gui进行编译的,如果熟悉cmake gui的话,也可以使用gui进行生成编译. 二:准备资源及工具 VS2013或以上版本,安装好 protobuf 源码,下载地址:官网:http://code.google.com/p/protobuf/git网:https://github.com/google/protobuf或git:https://github.com/google/p

TableML-GUI篇(Excel编译/解析工具)

项目情况 本文接上篇TableML Excel编译/解析工具,本文主要介绍GUI工具的使用,及配置项,如果你想了解此工具更加详细的说明,请阅读上篇文章. 项目地址:https://github.com/zhaoqingqing/TableML 项目介绍和更新日志 项目介绍 TableML, Table Markup Language, 基于电子表格的标记语言, 类似JSON, XML, INI,TableML可以作为软件项目的配置标记语言, 与之不同的是,您可以使用Excel等电子表格编辑软件来

vs2015+64位win10系统ceres-solver编译

记录下自己编译ceres-solver走过的弯路,同时希望对其他人能有所帮助. 编译过程主要参考以下两篇博文,但还是存在一些大坑,后面我会着重强调. http://blog.csdn.net/streamchuanxi/article/details/52944652 http://blog.csdn.net/yizhou2010/article/details/52596280 1. 下载必备库ceres-solver-1.11.0.eigen.gflags-2.0.glog-master 具