如何安装依赖于静态库的自定义PHP扩展

时间:2012-12-20 22:11:03

标签: php-extension

我环顾四周(最相关的was this。)

我写了一个自定义的php扩展来包装一个静态的lib(用PGI构建。)

这不是直截了当的,但总的来说:

  • 下载了PHP源代码
  • 使用教程
  • 写了扩展名
  • export LDFLAGS =“ - L / home / matt / fstd_php / php-src / ext / fstd / lib -L ​​/ opt / pgi / linux86-64 / 2012 / libso”
  • export LIBS =“ - lrmn -lpgf90 -lpghpf2 -lpgf90rtl -lpgftnrtl -lpghpf_rpm -lpgc -lrt -lm”
  • 使用扩展程序构建PHP,它可以正常工作

有没有办法可以在Ubuntu的预安装版本的PHP中使用它?

该模块名为fstd

我试图模仿其他模块的安装方式(任意选择mongo),所以我在/ etc / php5 / mods-available中添加了一个ini文件,然后在ext / fstd / modules / fstd.so中添加了.so进入/ usr / lib / php5 / 20100525 /

使用php的系统安装似乎没有工作。

所以我在php.ini中启用了enable_dl,并尝试包含.so。它似乎不包括依赖库。我明白了:

matt@khea ...php-src/ext/fstd % php -f fstd.php
PHP Warning:  dl(): Unable to load dynamic library '/usr/lib/php5/20100525/fstd.so' - /usr/lib/php5/20100525/fstd.so: undefined symbol: c_fstfrm in /home/matt/fstd_php/php-src/ext/fstd/fstd.php on line 5

符号c_fstfrm是我试图包装的静态库中的符号。

那么,是否有正确的方法将其安装为系统模块/扩展?否则,要使用自定义扩展,我必须只使用我自己构建的php和扩展版本吗?

1 个答案:

答案 0 :(得分:0)

我从来没有弄清楚这一点,所以我将PHP构建为CGI,只在需要的地方使用它(而不是对系统php安装做任何事情)