zabbix报错之:./zabbix_server: lld worker #2 started: symbol lookup error: ./zabbix_server: lld worker #2 started: undefined symbol: pcre_free_study
58051:20201013:070153.268 One child process died (PID:58106,exitcode/signal:127). Exiting ...
处理步骤:
1、查看zabbix_server脚本所需要的依赖包
[root@localhost home]# ldd ./zabbix/zabbix4.4.6/sbin/zabbix_server
linux-vdso.so.1 => (0x00007fff1a3ff000)
libmysqlclient.so.20 => /home/mysql/mysql5.7.19/lib/libmysqlclient.so.20 (0x00007fe0c6ed9000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe0c6cbc000)
libm.so.6 => /lib64/libm.so.6 (0x00007fe0c69ba000)
librt.so.1 => /lib64/librt.so.1 (0x00007fe0c67b2000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fe0c65ad000)
libodbc.so.2 => /usr/lib64/libodbc.so.2 (0x00007fe0c6346000)
libnetsnmp.so.20 => /usr/lib64/libnetsnmp.so.20 (0x00007fe0c606c000)
libz.so.1 => /lib64/libz.so.1 (0x00007fe0c5e55000)
libevent-1.4.so.2 => /usr/lib64/libevent-1.4.so.2 (0x00007fe0c5c3a000)
libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00007fe0c59e9000)
liblber-2.4.so.2 => /lib64/liblber-2.4.so.2 (0x00007fe0c57d9000)
libcurl.so.4 => /usr/lib64/libcurl.so.4 (0x00007fe0c5584000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fe0c536a000)
libpcre.so.0 => /lib64/libpcre.so.0 (0x00007fe0c513d000)
...
2、根据报错提示:undefined symbol: pcre_free_study 确定与pcre有关,定位到第一步与pcre有关的依赖为:
libpcre.so.0 => /lib64/libpcre.so.0 (0x00007fe0c513d000)
3、查看该路径下的库文件是否有该符号的定义:
[root@localhost home]# ll /lib64/libpcre.so.0
lrwxrwxrwx. 1 root root 16 Sep 29 10:41 /lib64/libpcre.so.0 -> libpcre.so.0.0.1
[root@localhost home]# nm -D /lib64/libpcre.so.0.0.1 |grep pcre_free_study 这里是空的
4、检查安装的pcre路径下的lib目录该库文件是否包含该符号定义
注:pcre的安装请自行百度,这里的/usr/local/pcre是本人当时编译安装pcre指定的路径 --prefix=/usr/local/pcre
[root@localhost home]# nm -D /usr/local/pcre/lib/libpcre.so.0 |grep pcre_free_study
0000000000016a60 T pcre_free_study
5、从第3步我们指定原有的路径下的库文件是不包含pcre_free_study符号定义的,删除原有/lib64下的相应库文件
[root@localhost home]# rm -rf /lib64/libpcre.so.0
[root@localhost home]# ll /lib64/ | grep libpcre
grep: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory
6、删除完成,接下来建立软链接到/lib64
[root@localhost home]# ln -s /usr/local/pcre/lib/libpcre.so.0.0.1 /lib64/libpcre.so.0
[root@localhost home]# ll /lib64/libpcre.so.0
lrwxrwxrwx. 1 root root 36 Oct 13 07:15 /lib64/libpcre.so.0 -> /usr/local/pcre/lib/libpcre.so.0.0.1
[root@localhost home]# nm -D /lib64/libpcre.so.0 |grep pcre_free_study
0000000000016a60 T pcre_free_study
完成以上操作即可解决此报错,如果帮到您还请给个关注点赞!! 知识共分享,有疑问可留意