系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
去也无踪
- 帖子: 28
- 注册时间: 2013-11-16 20:03
#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
#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
- 论坛版主
- 帖子: 6456
- 注册时间: 2008-09-18 13:11
#3
帖子
由 astolia » 2018-07-18 15:43
你是怎么用的pcre产生那个报错的?
-
去也无踪
- 帖子: 28
- 注册时间: 2013-11-16 20:03
#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
- 论坛版主
- 帖子: 6456
- 注册时间: 2008-09-18 13:11
#5
帖子
由 astolia » 2018-07-19 10:02
你自己编译的pcre和glib只是库文件,总要有其他程序来调用吧。我的意思就是问你是在运行什么程序时,报pcre不支持unicode的?
常见的原因就是那个程序运行时没有用你自己编译的库。一般用
来看链接的库到底是哪些
-
去也无踪
- 帖子: 28
- 注册时间: 2013-11-16 20:03
#6
帖子
由 去也无踪 » 2018-07-19 10:56
astolia 写了: ↑2018-07-19 10:02
你自己编译的pcre和glib只是库文件,总要有其他程序来调用吧。我的意思就是问你是在运行什么程序时,报pcre不支持unicode的?
常见的原因就是那个程序运行时没有用你自己编译的库。
就是在编译glib,不对应该算是配置检测阶段就报这个错误。主贴的configure glib 里的命令运行的错误信息啊。
-
去也无踪
- 帖子: 28
- 注册时间: 2013-11-16 20:03
#8
帖子
由 去也无踪 » 2018-07-19 13:17
不需要手动设置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
- 论坛版主
- 帖子: 6456
- 注册时间: 2008-09-18 13:11
#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
#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
#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
- 论坛版主
- 帖子: 6456
- 注册时间: 2008-09-18 13:11
#12
帖子
由 astolia » 2018-07-20 9:53
去也无踪 写了: ↑2018-07-20 9:10ld.so.cache不是会在系统启动时更新么?
你想多了。如果每一次启动都要更新,那么绝大多数时候都是在浪费时间白做工。一般都是在安装deb包后,如果包里包含库文件,才触发一次更新。
去也无踪 写了: ↑2018-07-20 9:27如果有两个相同的库但是指向不同。实际加载是那个呢(出现的顺序优先么)?
是的,记录这些的/etc/ld.so.cache是个有序列表