今天在nagios客户端编译nrpe时,遇到跟以下类似的错误,但按照以下方法,解决不了我的问题,我最后的解决办法是:从另外一台做了负载均衡的nagios客户端上直接scp已经编译好的nagios目录,因为两天机器的几乎环境是一样的,居然行得通。
#scp -rp nagios <a href="mailto:user@remote" IP:remote">user@remote IP:remote dir
#赋权:chown和chmod
以下内容是在网上找的,供参考
今天在合作方的服务器上编译nrpe时,报如下错误
cd ./src/; make ; cd .. make[1]: Entering directory `/usr/local/src/nrpe-2.12/src' gcc -g -O2 -I/usr/local/ssl/include/openssl -I/usr/local/ssl/include -DHAVE_CONFIG_H -o nrpe nrpe.c utils.c -L/usr/lib64 -lssl -lcrypto -lnsl -lwrap nrpe.c: In function ‘main’: nrpe.c:244: warning: assignment makes pointer from integer without a cast /tmp/cccgDIQ0.o: In function `main': /usr/local/src/nrpe-2.12/src/nrpe.c:244: undefined reference to `get_dh512' collect2: ld returned 1 exit status make[1]: *** [nrpe] Error 1 make[1]: Leaving directory `/usr/local/src/nrpe-2.12/src' *** Compile finished *** If the NRPE daemon and client compiled without any errors, you can continue with the installation or upgrade process. Read the PDF documentation (NRPE.pdf) for information on the next steps you should take to complete the installation or upgrade.
其中的错误为
/usr/local/src/nrpe-2.12/src/nrpe.c:244: undefined reference to `get_dh512'
这个错误是由openssl引起的,我发现系统上除了默认的openssl外在/usr/local/ssl目录下有个编译的openssl,这个也可以从以上错误输出看出来:gcc -g -O2 -I/usr/local/ssl/include/openssl -I/usr/local/ssl/include -DHAVE_CONFIG_H -o nrpe nrpe.c utils.c -L/usr/lib64 -lssl -lcrypto -lnsl -lwrap
-I/usr/local/ssl
看来是没有去找系统默认的openssl和openssl-devel解决方法:
我是直接去configure文件里把/usr/local/ssl这个路径给删了
vi /usr/local/src/nrpe-2.12/configure for dir in $ssl_inc_dir $ssl_dir /usr/local/openssl /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr /usr/freeware/lib/openssl # 把这行中的/usr/local/ssl去掉 for dir in $ssl_inc_dir $ssl_dir /usr/local/openssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr /usr/freeware/lib/openssl
生成makefile
./configure make all
通过,OK。