你怎么编译lp_solve对macports php 5.4.2?

时间:2013-10-20 21:39:26

标签: php macports lpsolve

我按照此处的说明操作:http://lpsolve.sourceforge.net/5.5/PHP.htm#Compile_the_lpsolve_driver并从此处下载了源代码:http://sourceforge.net/projects/lpsolve/但是当我从源代码目录中输入phpize时,我收到此消息:Cannot find config.m4. Make sure that you run '/opt/local/bin/phpize' in the top level source directory of the module.我是不知道我做错了什么。我没有在lpsolve的源目录中的任何地方(递归地)看到config.m4。

2 个答案:

答案 0 :(得分:1)

查看lp_solve_5.5/extra/PHP/,了解您是否能够在那里找到config.m4

nabble thread已过时,但应该有所帮助。

答案 1 :(得分:1)

GOT IT。

我已经发布了以下步骤以使其正常运行。它看起来很长但不是那么糟糕。

这三个网站有助于解决这个问题。

For building the correct library

For malloc error when using make

For function_entry error when using make

下载: lp_solve_5.5.2.0_source.tarlp_solve_5.5.2.0_PHP_source.tar

来自http://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.0/

这些是我为使其发挥作用而采取的步骤。首先确保您的扩展目录是正确的。我将我的设置恢复到/opt/local/lib/php54/extensions/no-debug-non-zts-20100525文件中的默认值(基本上将其注释为php.ini)。我还添加了行extension=phplpsolve55.so。使用$ port unload apache2$ port load apache2重新启动网络服务器。

如果您运行$ php,终端此时会抱怨无法找到phplpsolve55.so驱动程序。

lp_solve_5.5_source.tar.gz下载并展开到 名为lp_solve_5.5的目录。

lp_solve_5.5.2.0_PHP_source.tar下载并展开到 名为lp_solve_5.5_PHP的目录。

1)在源目录中构建lp_solve库。

$ cd lp_solve_5.5/lpsolve55
$ sh ccc.osx

这会在lpsolve55子目录中创建两个新文件:

$ ls liblp*
liblpsolve55.a     liblpsolve55.dylib

对我来说,这两个文件位于lpsolve55\bin\osx64

2)安装lp_solve库。

如果目录lpsolve55中尚未存在,则cd到它。将liblpsolve55.aliblpsolve55.dylib复制到/usr/local/lib(您可能需要先创建/usr/local/lib$ sudo mkdir -p /usr/local/lib):

$ sudo cp liblpsolve55.a liblpsolve55.dylib /usr/local/lib

3)测试构建和安装。

$ cd lp_solve_5.5/demo

ccc.osx脚本已损坏。好消息是版本5.5 lp_solve修复了Mac中的“malloc.h”不兼容性 早期版本。 Unix / Linux脚本现在可以在OS X上运行 患者... 构建'demo'可能需要几秒钟时间:

$ sh ccc

演示中的示例问题应该不会发出任何错误 “出色的数字精度|| * || = 0”:

$ ./demo

3)构建php lpsolve库

现在进入PHP目录(lp_solve_5.5_PHP

$ cd lp_solve_5.5_PHP/extra/PHP
$ phpize
$ ./configure --enable-maintainer-zts --with-phplpsolve55=PATH TO SOURCE DIRECTORY

*无论您将lp_solve_5.5 *

放在哪里,都可以找到源目录

然后打开应在当前(PHPmod.c)目录中的lp_solve_5.5_PHP/extra/PHP并将function_entry更改为zend_function_entry

然后打开hash.c,它也应该位于同一目录中并更改

所在的行
#include <malloc.h>

#if !defined(__APPLE__)
#include <malloc.h>
#endif

** 注意我只知道这样做是因为我在执行此操作之前在我的计算机上运行$ make并且抱怨这两个文件 *

然后做

$ make
$ cd modules
$ sudo cp phplpsolve55.so /opt/local/lib/php54/extensions/no-debug-non-zts-20100525/

现在运行$ php不应该返回任何错误。

再次重启Apache服务器,扩展应该可以正常工作。如果没有,我会尽我所能帮助。

希望这有助于将来。

修改

刚刚更新到小牛队,一切都运行得很好。我所做的是按照here概述的步骤,在完成升级后运行$ xcode-select --install。然后我做了$ sudo port selfupdate并最终运行了页面底部的脚本来重新加载我的所有端口:

curl -O https://svn.macports.org/repository/macports/contrib/restore_ports/restore_ports.tcl
chmod +x restore_ports.tcl
sudo ./restore_ports.tcl myports.txt

一旦完成,我做了$ sudo port load apache2,一切仍然有效。