构建错误:致命错误:pcre.h:找不到文件或目录

83

我刚刚完成安装Ubuntu 13.10。

我想尝试Phalcon,但是当我编译源代码(phalcon.so)时,出现了以下错误:

     from /home/fabrice/Downloads/cphalcon/build/32bits/phalcon.c:204:
/usr/include/php5/ext/pcre/php_pcre.h:29:18: fatal error: pcre.h: No such file or directory
 #include "pcre.h"
                  ^
compilation terminated.
make: *** [phalcon.lo] Erreur 1

我的lamp安装方式是:

sudo apt-get install -y apache2 php5 mysql-server libapache2-mod-php5 php5-mysql php5-curl php5-imagick php5-mcrypt php5-memcache php5-sqlite php5-xdebug php-apc php5-intl php-mongo php5-dev gcc

有人可以帮我吗?


php -v:PHP警告:PHP启动时无法加载动态库'/usr/lib/php5/20121212/phalcon.so' - /usr/lib/php5/20121212/phalcon.so: undefined symbol: php_end_ob_buffer in Unknown on line 0 PHP 5.5.3-1ubuntu2.2(cli)(built:Feb 28 2014 20:03:35) 版权所有(c)1997-2013年PHP Group Zend Engine v2.5.0,版权所有(c)1998-2013 Zend Technologies 带有Zend OPcache v7.0.3-dev,版权所有(c)1999-2013,由Zend Technologies提供 带有Xdebug v2.2.3,版权所有(c)2002-2013,由Derick Rethans提供 - fabrice
5个回答

234

Phalcon的最新版本使用PCRE库。

您可以按照以下方式安装它们:

sudo apt-get install libpcre3-dev

然后尝试重新安装Phalcon

对于CentOS,您需要使用以下命令

sudo yum install pcre-devel

致谢:@xgretsch

对于Mac用户,您可以使用

brew install pcre

鸣谢 @Brandon Romano

对于没有brew的Mac:

前往https://www.pcre.org/并下载最新版本的pcre:

tar -xzvf pcre-8.42.tar.gz
cd pcre-8.42
./configure --prefix=/usr/local/pcre-8.42
make
make install
ln -s /usr/local/pcre-8.42 /usr/sbin/pcre
ln -s /usr/local/pcre-8.42/include/pcre.h /usr/include/pcre.h

致谢 @user1377324


4
在Mac上,您可以使用命令brew install pcre安装PCRE。 - Brandon Romano
2
谢谢,这似乎已经解决了我的问题,当我使用PECL安装mongodb的PHP扩展时。 - Carlos F

10

对于MacOS Monterey amd64(darwin),需要创建符号链接。

首先,找到Brew安装的pcre.h的位置:

$ brew list pcre | grep 'pcre\.h$'

/opt/homebrew/Cellar/pcre/8.45/include/pcre.h

然后,获取GCC寻找头文件(.h)的目录:

$ cpp -v

...
#include <...> search starts here:
 /Library/Developer/CommandLineTools/usr/lib/clang/13.0.0/include
 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include
 /Library/Developer/CommandLineTools/usr/include   # <---- we are going to use this one
 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)

最后,创建一个符号链接到pcre.h文件,以便GCC在其搜索路径中找到它:

ln -s /opt/homebrew/Cellar/pcre/8.45/include/pcre.h \
      /Library/Developer/CommandLineTools/usr/include/pcre.h

为了测试是否成功,我们可以使用以下的C代码:
#include <stdio.h>
#include <pcre.h>
int main() {
   printf("lala popo");
   return 0;
}

并运行:

gcc test.c -o test


9

对于Mac OSX Maverick,您可以使用以下方法:

brew install pcre

如果出现错误,您可以使用以下方法:
sudo ln -s /opt/local/include/pcre.h /usr/include/
sudo pecl install apc 

我已经通过Homebrew在Big Sur上安装了PCRE,因此链接如下:

sudo ln -s /opt/homebrew/include/pcre2.h /usr/local/include/

另外,请确保 /usr/local/include/ 文件夹已经存在。(mac osx big sur) - Hariharan Kanakaraja
1
sudo ln -s /opt/homebrew/include/pcre.h /usr/local/include/ after brew install pcre solved issue with building Haskell project with stack - Geradlus_RU

8
为包含pcre.h文件,需在软件包存档中搜索pcre.h文件。我使用一个称为apt-file的命令来完成这个任务(如果未安装,请执行命令“apt-get install apt-file”和“apt-file update”)。然后搜索pcre软件包:“apt-file search -x“/pcre.h$””。-x选项表示使用正则表达式作为模式,apt-file会提供三个结果:kannel-dev: /usr/include/kannel/gwlib/pcre.h、libajax6-dev: /usr/include/ajax/pcre.h和libpcre3-dev: /usr/include/pcre.h。最后一个是需要的文件。因此,执行命令“apt-get install libpcre3-dev”将解决pcre.h文件编译问题。希望这篇文章能够帮助其他遇到此问题的人。

1

在M1 Pro MacBook Pro上使用macOS Monterey 12.6,以下是使用brew安装PHP 8.1的outh扩展所需的步骤:

  1. brew install pcre
  2. brew install pcre2
  3. sudo ln -s /opt/homebrew/include/pcre.h /usr/local/include/
  4. sudo ln -s /opt/homebrew/include/pcre2.h /usr/local/include/
  5. sudo pecl install oauth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接