在本地增加了一个新的php扩展后,遇到依赖的libphpcpp.so没有装上,于是自己来编译安装$ php -v

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/local/Cellar/php70/7.0.20_12/lib/php/extensions/no-debug-non-zts-20151012/thriftphp.so' - dlopen(/usr/local/Cellar/php70/7.0.20_12/lib/php/extensions/no-debug-non-zts-20151012/thriftphp.so, 9): Library not loaded: libphpcpp.so.2.0

Referenced from: /usr/local/Cellar/php70/7.0.20_12/lib/php/extensions/no-debug-non-zts-20151012/thriftphp.so

Reason: image not found in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/usr/local/Cellar/php70/7.0.20_12/lib/php/extensions/no-debug-non-zts-20151012/thriftphp.so' - dlopen(/usr/local/Cellar/php70/7.0.20_12/lib/php/extensions/no-debug-non-zts-20151012/thriftphp.so, 9): Library not loaded: libphpcpp.so.2.0

Referenced from: /usr/local/Cellar/php70/7.0.20_12/lib/php/extensions/no-debug-non-zts-20151012/thriftphp.so

Reason: image not found in Unknown on line 0

PHP 7.0.20 (cli) (built: Jun 23 2017 07:46:30) ( NTS )

Copyright (c) 1997-2017 The PHP Group

Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

安装步骤:

1、Clone代码库

git clone https://github.com/CopernicaMarketingSoftware/PHP-CPP.git

2、Mac下需要安装XCode,并运行安装组件

3、Mac下修改编译,修改Makefile 119行

LINKER_FLAGS = -shared

修改为

LINKER_FLAGS = -shared -undefined dynamic_lookup

如不修改就进行编译会遇到以下错误

Undefined symbols for architecture x86_64:

"_OnUpdateString", referenced from:

Php::Ini::fill(_zend_ini_entry_def*, int) in ini.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

make: *** [libphpcpp.so.2.0.0] Error 1

4、修改Makefile 179行

${LINKER} ${PHP_LINKER_FLAGS} -Wl,-soname,libphpcpp.so.$(SONAME) -o $@ ${COMMON_SHARED_OBJECTS} ${PHP_SHARED_OBJECTS}

修改为

${LINKER} ${PHP_LINKER_FLAGS} -Wl,-install_name,libphpcpp.so.$(SONAME) -o $@ ${COMMON_SHARED_OBJECTS} ${PHP_SHARED_OBJECTS}

5、make & make install

等运行成功,再来运行看看php -v,不报错了,搞定。

参考文章:

本博客所有文章如无特别注明均为原创。

php cpp,【PHP】libphpcpp.so编译相关推荐

  1. c语言编译生成cpp,C语言的编译过程

    编译: 编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序. 流程:C ...

  2. C 和 CPP 混合代码cmath编译出错

    Visual Studio会将cmath内的一些列函数报错 解决方式:项目->属性->配置属性->C/C++ ->高级->编译为->选择编译为C++代码即可 转载于 ...

  3. android.mk 冒号,android学习-ndk-build(androidstudio编译cocos2d-x库的cpp为so文件的解释)

    本文不作为ndk初学使用,只是对cpp等c++文件编译成so文件的过程中,参数含义,及ndk配置的解释.使用的技术比较旧. androidStudio使用gradle调用ndk-build工具编译c+ ...

  4. PointNet++等3D点云中用到的.cu、.cpp文件的编译的简单理解

    文章目录 1:cuda-c 2:一个简单的配置流程 3:.cu..cpp的关系 4:混合编译.cu..cpp 5:动态链接库(windows.linux) 6:NVCC学习笔记 7:g++的一些常用命 ...

  5. GCC 同时编译多个 C/C++ 文件

    以下这些操作都可以共用一条 gcc 指令: 将多个 C/C++ 源文件加工为汇编文件或者目标文件: 将多个 C/C++ 源文件或者预处理文件加工为汇编文件或者目标文件: 将多个 C/C++ 源文件.预 ...

  6. gcc 和 g++ 的联系和区别,使用 gcc 编译 c++

    GCC 编译器已经为我们提供了调用它的接口,对于 C 语言或者 C++ 程序,可以通过执行 gcc 或者 g++ 指令来调用 GCC 编译器. 实际使用中我们更习惯使用 gcc 指令编译 C 语言程序 ...

  7. 浅谈GCC预编译头技术

    浅谈GCC预编译头技术 文/jorge --谨以此文,悼念我等待MinGW编译时逝去的那些时间. 其 实刚开始编程的时候,我是丝毫不重视编译速度之类的问题的,原因很简单,因为那时我用BASICA.后来 ...

  8. Windows7上使用VS2013编译Caffe源码(不带GPU支持)步骤

    1.      从https://github.com/BVLC/caffe/通过git clone下载caffe源码,master分支,版本号为09868ac:$ git  clone https: ...

  9. C++ : 编译单元、声明和定义、头文件作用、防止头文件在同一个编译单元重复引用、static和不具名空间...

    转 自:http://www.cnblogs.com/rocketfan/archive/2009/10/02/1577361.html 1. 编译单元:一个.cc或.cpp文件作为一个编译单元,生成 ...

最新文章

  1. 7-5 顺序存储的二叉树的最近的公共祖先问题(25 分)
  2. <LINUX内核完全剖析:基于0.12内核> 笔记一
  3. 快速查询DB Lock的方法
  4. leetcode475. 供暖器(二分查找)
  5. 防抖与节流方案_前端ajax优化解决方案
  6. MsSql.RestApi - 构建ASP.NET REST API的最简单方法
  7. 百度地图开发实例文章(一)
  8. 菜鸟涂鸦作品展_No.24
  9. html ui 下拉列表,html - 如何给样式Material-ui选择字段下拉菜单?
  10. 佳博标签打印机如何打印条码流水号
  11. mysql间隙锁_解决MySQL可重复读——详解间隙锁
  12. IIS发布网站,如此简单
  13. flutter EventBus
  14. mysql验证索引正确性_mysql索引测试
  15. 那些年,兵败高考的大佬们
  16. 用友T3 批处理开启防火墙 1433 4630端口
  17. 2020年如何卸载/退出亚信安全防毒墙网络版
  18. 曙光服务器如何重新设置u盘启动_曙光服务器u盘安装linux系统
  19. shell脚本——批量创建用户
  20. python db读写实践

热门文章

  1. 解决idea中执行maven命令失败的问题
  2. Could not find com.android.support.constraint:constraint-layout的问题解决
  3. Import error: no module named cv2 错误解决方法
  4. 关于解决多台linux服务器间的文件实时同步问题
  5. Session机制详解及分布式中Session共享解决方案
  6. 关于MySQL连接Navicat Premium 12失败的解决方法
  7. windows下本地或者远程连接MYSQL数据库,报1130错误的解决方法
  8. 解决System.Data.SqlClient.SqlException (0x80131904): Timeout 时间已到的问题
  9. Eclipse一直building workspace问题解决
  10. 使用PHP搞定支付宝、微信扫码支付