【问题标题】:how do you compile lp_solve toward macports php 5.4.2?你如何编译 lp_solve 到 macports php 5.4.2?
【发布时间】:2013-10-20 21:39:26
【问题描述】:

我按照此处的说明进行操作: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。

【问题讨论】:

    标签: php macports lpsolve


    【解决方案1】:

    查看lp_solve_5.5/extra/PHP/,看看您是否可以在那里找到config.m4

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

    【讨论】:

    • 好的,我使用了这个线程:lp-solve.2324885.n4.nabble.com/… 来提供帮助,现在我遇到了这个问题:configure: error: Invalid phplpsolve55 library, make_lp() not found
    【解决方案2】:

    明白了。

    我已经发布了我为使其正常工作而采取的以下步骤。它看起来很长,但还不错。

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

    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.tar, lp_solve_5.5.2.0_PHP_source.tar

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

    这些是我为使其工作而采取的步骤。首先确保您的扩展目录是正确的。我在php.ini 文件中将我的设置恢复为默认值(基本上将其注释为/opt/local/lib/php54/extensions/no-debug-non-zts-20100525)。我还添加了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 上运行。 病人... 构建“演示”可能需要几秒钟:

    $ 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
    

    *哪里 PATH TO SOURCE DIRECTORY 是您放置 lp_solve_5.5* 的位置

    然后打开应该在当前 (lp_solve_5.5_PHP/extra/PHP) 目录中的PHPmod.c 并将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 服务器,扩展程序应该可以工作了。如果没有,我会尽我所能提供帮助。

    希望这对将来的某人有所帮助。

    编辑

    刚刚更新到 Mavericks,一切仍然完美无缺。我所做的是按照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,一切仍然正常。

    【讨论】:

    猜你喜欢
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 2013-12-27
    • 2011-09-13
    • 2010-09-14
    相关资源
    最近更新 更多