【问题标题】:compile glib 2.48 does not recognize pcre with utf support编译 glib 2.48 无法识别支持 ​​utf 的 pcre
【发布时间】:2016-03-26 22:01:26
【问题描述】:

我已经用--enable-utf8 --enable-unicode-propertiespcretest -C utf 从源代码编译了pcre 8.38,返回1

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

但是,当使用 PCRE_LIBS="/home/mybin/lib" PCRE_CFLAGS="/home/mybin/bin" 编译 glib 2.48 时,我从 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 通过吗?

【问题讨论】:

  • 查看config.log了解更多详细信息。

标签: gcc utf-8 pcre glib


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 有效。谢谢。 Debian 10,glib-2.52.3,pcre-8.39。
    【解决方案3】:

    首先,确保在配置过程中启用 unicode:

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

    然后是make。稍后,安装使用这个:

    make pkgconfigdir=/usr/lib/pkgconfig install
    

    【讨论】:

      【解决方案4】:

      make installlibpcre 步骤之后运行ldconfig。之后在 glib 中尝试 ./configure

      【讨论】:

        【解决方案5】:

        ./configure 通过编译一个小测试程序(第 27618 行)并运行它来测试 UTF-8 支持:

        #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 以跳过该测试,但该测试失败意味着存在其他问题,因此我不建议这样做。

        【讨论】:

          【解决方案6】:

          我在 glib README 中找到以下单词,它对我有用 关于 GLib 2.48 的说明 ======================

          • 现在默认使用 PCRE 的系统副本来实现 GRegex。 如果系统 PCRE 版本,则使用 --with-pcre=internal 进行配置 不可用或不受欢迎

          【讨论】:

            【解决方案7】:

            只有路径的 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"
            它对我有用

            【讨论】:

              【解决方案8】:

              我什至做了另一件事来使 glib 2.52.3 与 pcre 8.39 一起编译

              LD_LIBRARY_PATH=$PREFIX/lib ./configure &lt;...&gt;

              $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 没有帮助...

              【讨论】:

                猜你喜欢
                • 2012-04-19
                • 1970-01-01
                • 2014-04-11
                • 2011-10-03
                • 2016-06-18
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多