构建错误:致命错误:pcre.h:没有这样的文件或目录

fab*_*ice 76 php ubuntu build phalcon ubuntu-13.10

我刚刚安装完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
Run Code Online (Sandbox Code Playgroud)

我安装的灯是:

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

有谁能够帮我 ?

Nik*_*los 204

Phalcon的最新版本使用PCRE库.

您可以像这样安装它们:

sudo apt-get install libpcre3-dev
Run Code Online (Sandbox Code Playgroud)

然后再次尝试安装Phalcon

对于CentOS,您需要使用

sudo yum install pcre-devel
Run Code Online (Sandbox Code Playgroud)

致谢:@ xgretsch

对于Mac,你可以使用

brew install pcre
Run Code Online (Sandbox Code Playgroud)

积分@ Brandon Romano

对于没有的Mac brew

转到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
Run Code Online (Sandbox Code Playgroud)

积分@ user1377324

  • 在mac上你可以使用:`brew install pcre` (4认同)
  • 谢谢,这似乎解决了我使用PECL安装mongodb的PHP扩展时的问题. (2认同)

Fab*_*lla 10

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

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

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

/opt/homebrew/Cellar/pcre/8.45/include/pcre.h
Run Code Online (Sandbox Code Playgroud)

然后,获取 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)
Run Code Online (Sandbox Code Playgroud)

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

ln -s /opt/homebrew/Cellar/pcre/8.45/include/pcre.h \
      /Library/Developer/CommandLineTools/usr/include/pcre.h
Run Code Online (Sandbox Code Playgroud)

为了测试它是否有效,我们可以使用以下 C 代码:

#include <stdio.h>
#include <pcre.h>
int main() {
   printf("lala popo");
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

并运行:

gcc test.c -o test
Run Code Online (Sandbox Code Playgroud)


sta*_*onk 6

要包含pcre.h文件,请在软件包存档中搜索pcre.h文件.为此,我使用一个名为apt-file的命令(

apt-get install apt-file

apt-file更新

如果你没有安装它).

然后搜索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文件编译问题.希望它能帮助其他人,他们可能会找到这个帖子的答案.


Ast*_*stm 6

对于 mac osx 特立独行,您可以使用

brew install pcre
Run Code Online (Sandbox Code Playgroud)

如果它给你错误,你可以使用

sudo ln -s /opt/local/include/pcre.h /usr/include/
sudo pecl install apc 
Run Code Online (Sandbox Code Playgroud)

我已经在 Big Sur 通过自制软件安装了 pcre,因此链接如下:

sudo ln -s /opt/homebrew/include/pcre2.h /usr/local/include/
Run Code Online (Sandbox Code Playgroud)