编译PHP错误:“make:*** [libs / libphp5.bundle]错误1”

时间:2012-05-05 01:15:50

标签: php imap

我想在php中创建一个可以通过gmail地址发送和接收电子邮件的程序。我最初在运行OS X 10.4 Tiger的PPC Mac上使用XAMPP服务器,但它没有我需要的ssl支持。因此,我尝试设置一个(更新的)Apache服务器,因为我的mac附带的服务器已经过时了。通过从源代码编译,我已经安装了Apache服务器(2.2),php的imap扩展,以及php的openssl扩展。 (虽然我不知道是否需要。)

我像这样运行configure命令:

  

./ configure --with-imap = / usr / local / imap-2007f / --enable-sockets --with-imap-ssl = / usr / local / ssl --with-openssl = / usr / local / ssl --with-apxs2 = / usr / local / apache2 / bin / apxs --with-kerberos

然后按照php.3.5.12目录中的INSTALL文件中的指示执行了“make”命令。这导致:

  

collect2:ld返回1退出状态
  make: * [libs / libphp5.bundle]错误1

我已经研究过这个错误,似乎是因为很多不同的东西都与我的项目无关。首先,他们似乎都使用(或尝试使用)MySQl。就我的目的而言,我不需要那样做。我正在寻找一种方法来返回编程,以便我可以完成我的程序。

感谢您的帮助!

编辑:以下是完整的错误消息:

/usr/libexec/gcc/powerpc-apple-darwin8/4.0.1/ld: Undefined symbols:  
_iconv  
collect2: ld returned 1 exit status  
make: *** [libs/libphp5.bundle] Error 1  

3 个答案:

答案 0 :(得分:1)

我也遇到了这个问题,我已经付出了很多努力解决了这个问题。我正在PHP5.5.12上安装OS X 10.9.2

默认的Makefile会在libiconv.2.dylib下找到/usr/lib/并带有声明

19 MH_BUNDLE_FLAGS = -bundle -bundle_loader /usr/sbin/httpd -L/usr/lib -laprutil-1 -lldap -llber -llber -lexpat -liconv -lsqlite3 -lldap -llber -llber -L/usr/lib -lapr-1 -lpthread

但是,对于PHP,/usr/lib/中的OS X下没有适当的libiconv和正确的架构。我想该文件夹下的默认libiconv.2.dylib支持32位架构。

所以,我们现在知道问题到底是什么。我们有不同的方法来解决这个问题。

  1. (不推荐)使用配置--prefix=/usr安装最新的libiconv(可从gnu-libiconv(https://www.gnu.org/software/libiconv/#downloading)获取)

    但这种方式可能会导致其他更难的问题。因为OS X需要原始libiconv.2.dylib。更改后,许多应用程序,包括QQ,TeamViewer和x86支持的应用程序都无法再打开。他们立刻坠毁了。如果你真的遇到这种情况,不要担心,它可以解决。你可以查看我的gist.github.com/Yougmark。无论如何,可以安装php。

  2. (推荐)使用配置--prefix=/usr/local安装最新的libiconv(可从[gnu-libiconv]获取)

    然后将$make之前的Makefile修改为以下语句:

    19 MH_BUNDLE_FLAGS = -bundle -bundle_loader /usr/sbin/httpd -L/usr/local/lib -laprutil-1 -lldap -llber -llber -lexpat -liconv -lsqlite3 -lldap -llber -llber -L/usr/local/lib -lapr-1 -lpthread

    注意 -L/usr/lib 的两个位置,将其更改为 -L/usr/local/lib

  3. 现在,制作并安装,并享受新的PHP! :)有关详细信息,请参阅我的gist

答案 1 :(得分:0)

似乎未安装iconv库。除非您需要,否则您可以尝试使用--without-iconv配置选项禁用支持。

希望有所帮助。

答案 2 :(得分:0)

请注意,我必须运行" make clean"更改我的Makefile以使其正常工作