1

我环顾四周(最相关的是这个。)

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

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

  • 下载的 PHP 源代码
  • 使用教程编写了扩展
  • 导出 LDFLAGS="-L/home/matt/fstd_php/php-src/ext/fstd/lib -L/opt/pgi/linux86-64/2012/libso"
  • 导出 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 中启用了_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 版本和扩展吗?

4

1 回答 1

0

我永远无法弄清楚这一点,因此我将 PHP 构建为 CGI 并仅在需要时使用它(而不是对系统 php 安装做任何事情)

于 2013-01-02T15:10:20.273 回答