编译glib 2.48无法识别具有utf支持的pcre

时间:2016-03-26 22:01:27

标签: gcc utf-8 pcre glib

我已经使用--enable-utf8 --enable-unicode-propertiespcretest -C utf重新调整1从源代码编译了pcre 8.38。

which pcretest返回/home/mybin/bin/pcretest

但是,当使用glib 2.48编译PCRE_LIBS="/home/mybin/lib" PCRE_CFLAGS="/home/mybin/bin"时,我从configure.log中收到configure错误

checking for PCRE... yes
checking for Unicode support in PCRE... no
configure: error: *** The system-supplied PCRE does not support Unicode properties or UTF-8.

还有什么我应该检查才能让glib configure通过吗?

8 个答案:

答案 0 :(得分:6)

我也遇到了他的问题。确保LD_LIBRARY_PATH中还有$ PCRE_INSTALL_DIR / lib。这解决了我的问题。

答案 1 :(得分:3)

首先,确保在配置期间启用unicode:

./configure --enable-utf --enable-unicode-properties

然后make。稍后,安装使用此:

make pkgconfigdir=/usr/lib/pkgconfig install

答案 2 :(得分:2)

ldconfigmake install后运行libpcre。之后在glib中尝试./configure

答案 3 :(得分:2)

如果内部glib pcre是可接受的选项,那么您可以在configure中使用--with-pcre

答案 4 :(得分:1)

./配置测试UTF-8支持,编译一个小测试程序(第27618行)并运行它:

#include <pcre.h>
int main () {
    int support;
    pcre_config (PCRE_CONFIG_UTF8, &support);
    if (!support)
        return 1;
    pcre_config (PCRE_CONFIG_UNICODE_PROPERTIES, &support);
    if (!support)
        return 1;
    return 0;
}

如果该测试程序无法正确编译和运行,或者由于任何原因返回1,则./configure将表示没有UTF-8支持。 检查您的操作系统是否可以在PCRE lib目录中找到共享库。您可以通过编译上述测试程序并确保它可以在没有崩溃的情况下运行,因为缺少共享库。

我遇到了这个问题,但即使我修复它,Glib也无法在PCRE中检测到UTF-8支持。当发生这种情况时,您可以尝试编辑./configure跳过该测试,但未通过该测试暗示存在其他问题,因此我不建议这样做。

答案 5 :(得分:1)

只有路径的PCRE_LIBS和PCRE_CFLAGS是不够的。

在我的情况下,用pcre-8.38编译glib-2.52.3,我用过 PCRE_CFLAGS="/usr/local/include"
PCRE_LIBS="/usr/local/lib",
并获得The system-supplied PCRE does not support Unicode properties or UTF-8结果。 我按照config.log,发布了这个 configure:27740: checking for Unicode support in PCRE configure:27766: gcc -o conftest -g -O2 /usr/local/include -pthread conftest.c /usr/local/lib >&5 /usr/local/include: file not recognized: Is a directory collect2: ld returned 1 exit status configure:27766: $? = 1 configure: program exited with status 1

所以我改变了旗帜内容,变成了这个 PCRE_CFLAGS="-I/usr/local/include"
PCRE_LIBS="-L/usr/local/lib"
它告诉我
configure:27740: checking for Unicode support in PCRE configure:27766: gcc -o conftest -g -O2 -I/usr/local/include -pthread conftest.c -L/usr/local/lib >&5 /tmp/cc8eu7d8.o: In function 'main': /data1/rugalzhang/glib-2.52.3/conftest.c:178: undefined reference to 'pcre_config' /data1/rugalzhang/glib-2.52.3/conftest.c:181: undefined reference to 'pcre_config' collect2: ld returned 1 exit status configure:27766: $? = 1 configure: program exited with status 1

与此同时,做出最后的改变 PCRE_CFLAGS="-I/usr/local/include"
PCRE_LIBS="-L/usr/local/lib -lpcre"
它对我有用

答案 6 :(得分:1)

我在glib README中找到以下单词,对我有用 关于GLib 2.48的注意事项  =====================

  • 默认情况下,现在默认使用PCRE的系统副本来实现GRegex。 如果系统PCRE版本,则使用--with-pcre = internal配置 不可用或不想要的

答案 7 :(得分:0)

我做了另外一件事,使用pcre 8.39编译glib 2.52.3

LD_LIBRARY_PATH=$PREFIX/lib ./configure <...>

其中$PREFIX/lib是libpcre.so所在的位置。

不设置LD_LIBRARY_PATH,在config.log中:

./conftest: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

修改PCRE_CFLAGS或PCRE_LIBS没有帮助...