[已解决]为什么提示PCRE不支持unicode?

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
去也无踪
帖子: 28
注册时间: 2013-11-16 20:03

[已解决]为什么提示PCRE不支持unicode?

#1

帖子 去也无踪 » 2018-07-18 12:01

安装PCRE时打开了unicode的开关,信息摘要里也显示UTF8/16/32和unicode均为yes。
在安装glib时使用system pcre且设置了PKG_CONFIG_PATH包含安装的PCRE。但是还是提示PCRE不支持unicode或者UTF8.

代码: 全选

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
./configure --with-gnu-ld --with-sysroot=/usr/local --with-pcre=system
上次由 去也无踪 在 2018-07-20 9:11,总共编辑 2 次。
头像
去也无踪
帖子: 28
注册时间: 2013-11-16 20:03

Re: 为什么提示PCRE不支持unicode?

#2

帖子 去也无踪 » 2018-07-18 12:19

对应部分的信息摘要

代码: 全选

    Build 8 bit pcre library ........ : yes
    Build 16 bit pcre library ....... : yes
    Build 32 bit pcre library ....... : yes
    Build C++ library ............... : yes
    Enable JIT compiling support .... : yes
    Enable UTF-8/16/32 support ...... : yes
    Unicode properties .............. : yes
    Newline char/sequence ........... : anycrlf
    \R matches only ANYCRLF ......... : yes
头像
astolia
论坛版主
帖子: 6386
注册时间: 2008-09-18 13:11

Re: 为什么提示PCRE不支持unicode?

#3

帖子 astolia » 2018-07-18 15:43

你是怎么用的pcre产生那个报错的?
头像
去也无踪
帖子: 28
注册时间: 2013-11-16 20:03

Re: 为什么提示PCRE不支持unicode?

#4

帖子 去也无踪 » 2018-07-19 9:43

astolia 写了: 2018-07-18 15:43 你是怎么用的pcre产生那个报错的?
没太明白。
pcre

代码: 全选

./configure --enable-unicode-properties  --enable-newline-is-anycrlf --enable-bsr-anycrlf --with-gnu-ld [其它选项]
make
make install
glib

代码: 全选

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
./configure --with-gnu-ld --with-sysroot=/usr/local --with-pcre=system
头像
astolia
论坛版主
帖子: 6386
注册时间: 2008-09-18 13:11

Re: 为什么提示PCRE不支持unicode?

#5

帖子 astolia » 2018-07-19 10:02

你自己编译的pcre和glib只是库文件,总要有其他程序来调用吧。我的意思就是问你是在运行什么程序时,报pcre不支持unicode的?
常见的原因就是那个程序运行时没有用你自己编译的库。一般用

代码: 全选

ldd 程序路径
来看链接的库到底是哪些
头像
去也无踪
帖子: 28
注册时间: 2013-11-16 20:03

Re: 为什么提示PCRE不支持unicode?

#6

帖子 去也无踪 » 2018-07-19 10:56

astolia 写了: 2018-07-19 10:02 你自己编译的pcre和glib只是库文件,总要有其他程序来调用吧。我的意思就是问你是在运行什么程序时,报pcre不支持unicode的?
常见的原因就是那个程序运行时没有用你自己编译的库。
就是在编译glib,不对应该算是配置检测阶段就报这个错误。主贴的configure glib 里的命令运行的错误信息啊。
头像
astolia
论坛版主
帖子: 6386
注册时间: 2008-09-18 13:11

Re: 为什么提示PCRE不支持unicode?

#7

帖子 astolia » 2018-07-19 11:54

configure应该会有一个config.log文件,里面有具体的检测方法和出错原因
可能需要手动设置一下PCRE_CFLAGS和PCRE_LIBS,参考 https://stackoverflow.com/a/45456421
头像
去也无踪
帖子: 28
注册时间: 2013-11-16 20:03

Re: 为什么提示PCRE不支持unicode?

#8

帖子 去也无踪 » 2018-07-19 13:17

astolia 写了: 2018-07-19 11:54 configure应该会有一个config.log文件,里面有具体的检测方法和出错原因
可能需要手动设置一下PCRE_CFLAGS和PCRE_LIBS,参考 https://stackoverflow.com/a/45456421
不需要手动设置PCRE_CFLAGS和PCRE_LIBS,你给出的链接里其实只需要设置一下pkg-config的搜索路径就行。PCRE有.pc文件的。
不过,我的确没有去检查config.log文件。文件里写的明确
checking for Unicode support in PCRE
....
libpcre.so.1: cannot open shared object file: No such file or directory
在PCRE的安装目录里找到了libpcre.so.1。而log文件的加载位置记录为
gcc -o conftest -g -O2 -I/usr/local/include -pthread conftest.c -L/usr/local/lib -lpcre >&5
也很明确的说明PCRE加载的位置是正确的。

代码: 全选

ls /usr/local/lib/libpcre.so*
/usr/local/lib/libpcre.so    /usr/local/lib/libpcre.so.1.2.10
/usr/local/lib/libpcre.so.1
头像
astolia
论坛版主
帖子: 6386
注册时间: 2008-09-18 13:11

Re: 为什么提示PCRE不支持unicode?

#9

帖子 astolia » 2018-07-19 17:16

在PCRE的安装目录里找到了libpcre.so.1。而log文件的加载位置记录为
gcc -o conftest -g -O2 -I/usr/local/include -pthread conftest.c -L/usr/local/lib -lpcre >&5
也很明确的说明PCRE加载的位置是正确的。
错。你这个只能表明编译过程中需要的.a库位置是对的。而运行时需要的.so库没有找到。

代码: 全选

ldconfig -p | grep libpcre.so
看看有没有你编译的,没有的话应该是你编译安装之后没有运行sudo ldconfig
头像
去也无踪
帖子: 28
注册时间: 2013-11-16 20:03

Re: 为什么提示PCRE不支持unicode?

#10

帖子 去也无踪 » 2018-07-20 9:10

astolia 写了: 2018-07-19 17:16 错。你这个只能表明编译过程中需要的.a库位置是对的。而运行时需要的.so库没有找到。

代码: 全选

ldconfig -p | grep libpcre.so
看看有没有你编译的,没有的话应该是你编译安装之后没有运行sudo ldconfig
ld.so.cache不是会在系统启动时更新么?
的确是在列表中没有找到libpcre.so.1。
头像
去也无踪
帖子: 28
注册时间: 2013-11-16 20:03

Re: 为什么提示PCRE不支持unicode?

#11

帖子 去也无踪 » 2018-07-20 9:27

astolia 写了: 2018-07-19 17:16 看看有没有你编译的,没有的话应该是你编译安装之后没有运行sudo ldconfig
另外,请问,如果有两个相同的库但是指向不同。实际加载是那个呢(出现的顺序优先么)?例如

代码: 全选

libz.so.1 (libc6,x86-64) => /usr/local/lib/libz.so.1
libz.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libz.so.1
头像
astolia
论坛版主
帖子: 6386
注册时间: 2008-09-18 13:11

Re: 为什么提示PCRE不支持unicode?

#12

帖子 astolia » 2018-07-20 9:53

去也无踪 写了: 2018-07-20 9:10ld.so.cache不是会在系统启动时更新么?
你想多了。如果每一次启动都要更新,那么绝大多数时候都是在浪费时间白做工。一般都是在安装deb包后,如果包里包含库文件,才触发一次更新。
去也无踪 写了: 2018-07-20 9:27如果有两个相同的库但是指向不同。实际加载是那个呢(出现的顺序优先么)?
是的,记录这些的/etc/ld.so.cache是个有序列表
回复