cacti-spine make编译报错/usr/bin/ld: cannot find -lmysqlclient_r 解决

在CentOS系统中,用户下载并解压spine后,在编译过程中遇到找不到libmysqlclient_r.so的问题。解决方法是创建软链接到正确的位置。然而,即使解决了这个问题,后续编译又出现snmp相关的符号未定义错误。最终,通过确保安装了mysql-devel、net-snmp、net-snmp-devel,并使用指定snmp路径的配置选项重新编译,成功避免了错误。
摘要由CSDN通过智能技术生成

下载安装spine过程

[root@centos138 local]# wget https://www.cacti.net/downloads/spine/cacti-spine-1.2.23.tar.gz
[root@centos138 local]# tar -zxvf cacti-spine-1.2.23.tar.gz
[root@centos138 local]# mv cacti-spine-1.2.23 /usr/local/spine
[root@centos138 local]#
[root@centos138 local]# cd /usr/local/spine/
[root@centos138 spine]# ll
total 548
-rwxrwxr-x 1 whitecat whitecat  2678 Jan  2 22:48 bootstrap
-rw-rw-r-- 1 whitecat whitecat 27542 Jan  2 22:48 CHANGELOG
-rw-rw-r-- 1 whitecat whitecat  4833 Jan  2 22:48 common.h
-rw-rw-r-- 1 whitecat whitecat 15539 Jan  2 22:48 configure.ac
-rwxrwxr-x 1 whitecat whitecat   248 Jan  2 22:48 debug
-rw-rw-r-- 1 whitecat whitecat  6103 Jan  2 22:48 error.c
-rw-rw-r-- 1 whitecat whitecat  2471 Jan  2 22:48 error.h
-rw-rw-r-- 1 whitecat whitecat  4679 Jan  2 22:48 INSTALL
-rw-rw-r-- 1 whitecat whitecat  6978 Jan  2 22:48 keywords.c
-rw-rw-r-- 1 whitecat whitecat  2597 Jan  2 22:48 keywords.h
-rw-rw-r-- 1 whitecat whitecat 26440 Jan  2 22:48 LICENSE
-rw-rw-r-- 1 whitecat whitecat 12273 Jan  2 22:48 locks.c
-rw-rw-r-- 1 whitecat whitecat  2576 Jan  2 22:48 locks.h
-rw-rw-r-- 1 whitecat whitecat   462 Jan  2 22:48 Makefile.am
-rw-rw-r-- 1 whitecat whitecat 26851 Jan  2 22:48 Makefile.in
-rw-rw-r-- 1 whitecat whitecat 10759 Jan  2 22:48 nft_popen.c
-rw-rw-r-- 1 whitecat whitecat  2532 Jan  2 22:48 nft_popen.h
-rw-rw-r-- 1 whitecat whitecat 18376 Jan  2 22:48 php.c
-rw-rw-r-- 1 whitecat whitecat  2518 Jan  2 22:48 php.h
-rw-rw-r-- 1 whitecat whitecat 44710 Jan  2 22:48 ping.c
-rw-rw-r-- 1 whitecat whitecat  5386 Jan  2 22:48 ping.h
-rw-rw-r-- 1 whitecat whitecat 94716 Jan  2 22:48 poller.c
-rw-rw-r-- 1 whitecat whitecat  3007 Jan  2 22:48 poller.h
-rw-rw-r-- 1 whitecat whitecat  4063 Jan  2 22:48 README.md
-rw-rw-r-- 1 whitecat whitecat 31532 Jan  2 22:48 snmp.c
-rw-rw-r-- 1 whitecat whitecat  3210 Jan  2 22:48 snmp.h
-rw-rw-r-- 1 whitecat whitecat 35649 Jan  2 22:48 spine.c
-rw-rw-r-- 1 whitecat whitecat  3585 Jan  2 22:48 spine.conf.dist
-rw-rw-r-- 1 whitecat whitecat 18099 Jan  2 22:48 spine.h
-rw-rw-r-- 1 whitecat whitecat 18762 Jan  2 22:48 sql.c
-rw-rw-r-- 1 whitecat whitecat  3169 Jan  2 22:48 sql.h
-rw-rw-r-- 1 whitecat whitecat 56778 Jan  2 22:48 util.c
-rw-rw-r-- 1 whitecat whitecat  4309 Jan  2 22:48 util.h
[root@centos138 spine]#
[root@centos138 spine]# sh bootstrap
。。。
  To compile and install Spine using MySQL versions previous to 5.5
  please do the following:

  ./configure --with-reentrant
  make
  make install
  chown root:root /usr/local/spine/bin/spine
  chmod +s /usr/local/spine/bin/spine

[root@centos138 spine]# ./configure --with-reentrant

按照此上边的命令configure,到make指令时,报错:

[root@centos138 spine]# make
/bin/sh ./libtool  --tag=CC   --mode=link gcc  -I/usr/include/net-snmp -I/usr/include/net-snmp/.. -I/usr/include/mysql -g -O2  -L/usr/lib64 -L/usr/lib64  -o spine sql.o spine.o util.o snmp.o locks.o poller.o nft_popen.o php.o ping.o keywords.o error.o  -lmysqlclient_r -lm -ldl -lcrypto -lz -lpthread -ldl -lm -lpthread -lssl
libtool: link: gcc -I/usr/include/net-snmp -I/usr/include/net-snmp/.. -I/usr/include/mysql -g -O2 -o spine sql.o spine.o util.o snmp.o locks.o poller.o nft_popen.o php.o ping.o keywords.o error.o  -L/usr/lib64 -lmysqlclient_r -lcrypto -lz -ldl -lm -lpthread -lssl
/usr/bin/ld: cannot find -lmysqlclient_r
collect2: error: ld returned 1 exit status
make: *** [spine] Error 1

报错找不到libmysqlclient_r.so文件,需要在

[root@centos138 lib]# cd /usr/lib
[root@centos138 lib]# find / -name "libmysqlclient*"
find: ‘/run/user/1000/gvfs’: Permission denied
/usr/lib/libmysqlclient.so.21
/usr/lib/libmysqlclient.so
/usr/lib64/mysql/libmysqlclient.so.18
/usr/lib64/mysql/libmysqlclient.so.18.0.0
/usr/lib64/mysql/libmysqlclient.so
/usr/lib64/mysql/libmysqlclient_r.so 《---------
/usr/lib64/libmysqlclient.so.21
#创建软链接
[root@centos138 lib]# ln -s /usr/lib64/mysql/libmysqlclient_r.so libmysqlclient_r.so
[root@centos138 lib]#
[root@centos138 lib]# ll |grep mysql
lrwxrwxrwx   1 root     root           36 Apr 25 11:21 libmysqlclient_r.so -> /usr/lib64/mysql/libmysqlclient_r.so
-rwxr-xr-x   1 root     root     10876320 Apr 10 11:22 libmysqlclient.so.21
lrwxrwxrwx   1 root     root           10 Apr 24 22:10 mysql -> /opt/mysql

再次make,又出现报错:

[root@centos138 spine]# make
/bin/sh ./libtool  --tag=CC   --mode=link gcc  -I/usr/include/net-snmp -I/usr/include/net-snmp/.. -I/usr/include/mysql -g -O2  -L/usr/lib64 -L/usr/lib64  -o spine sql.o spine.o util.o snmp.o locks.o poller.o nft_popen.o php.o ping.o keywords.o error.o  -lmysqlclient_r -lm -ldl -lcrypto -lz -lpthread -ldl -lm -lpthread -lssl
libtool: link: gcc -I/usr/include/net-snmp -I/usr/include/net-snmp/.. -I/usr/include/mysql -g -O2 -o spine sql.o spine.o util.o snmp.o locks.o poller.o nft_popen.o php.o ping.o keywords.o error.o  -L/usr/lib64 -lmysqlclient_r -lcrypto -lz -ldl -lm -lpthread -lssl
。。。
snmp.o: In function `snmp_spine_init':
/usr/local/spine/snmp.c:94: undefined reference to `init_snmp'
snmp.o: In function `snmp_spine_close':
/usr/local/spine/snmp.c:105: undefined reference to `snmp_shutdown'
snmp.o: In function `snmp_host_cleanup':
/usr/local/spine/snmp.c:367: undefined reference to `snmp_sess_close'
collect2: error: ld returned 1 exit status
make: *** [spine] Error 1

要确保mysql-devel、net-snmp、net-snmp-devel这些都有安装,然后加上snmp选项重试编译

./configure --with-mysql=/usr/mysql --with-snmp=/usr/include/net-snmp/

然后重试make & make install,没有报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值