在centos7系统上编译snmp++,由于诸多原因,需要编译出32bit的libsnmp.so。但是遇到如下错误:
libtool: link: g++ -m32 -pthread -o .libs/snmpNext snmpNext.o -L/tmp/third_lib/snmp++/lib /opt/srcs/660_develop/third_lib/snmp++/snmp_src/build/src/.libs/libsnmp++.so /usr/gcc-7.1/lib/../lib/libstdc++.so -lm -pthread -Wl,-rpath -Wl,/usr/gcc-7.1/lib/../lib
/opt/srcs/660_develop/third_lib/snmp++/snmp_src/build/src/.libs/libsnmp++.so: undefined reference to `des_ncbc_encrypt'
/opt/srcs/660_develop/third_lib/snmp++/snmp_src/build/src/.libs/libsnmp++.so: undefined reference to `des_ede3_cbc_encrypt'
/opt/srcs/660_develop/third_lib/snmp++/snmp_src/build/src/.libs/libsnmp++.so: undefined reference to `des_key_sched'
collect2: error: ld returned 1 exit status
生成makefile的配置命令:
../configure --enable-macaddress --without-ssl --without-tomcrypt CCFLAGS=-m32 CPPFLAGS=-m32 CXXFLAGS=-m32 CFLAGS=-m32 LDFLAGS=-L/tmp/third_lib/snmp++/lib
des_ncbc_encrypt、des_ede3_cbc_encrypt和des_key_sched三个函数是libdes库中的函数,在上面的命令中没有加--with-des选项,如果加上了,报错如下:
checking if libdes is wanted... (cached) yes
checking if libdes wants a prefix... (cached) /tmp/third_lib/libdes
checking if libdes is in /usr/local... no
checking if libdes is in /usr... no
checking if libdes is wanted... (cached) yes
checking if libdes wants a prefix... (cached) /tmp/third_lib/libdes
checking if libdes is in /usr/local... no
checking if libdes is in /usr... no
无论把libdes.a文件拷贝/usr,/usr/local目录,都报错,找不到。只好不用--with-des选项,然后在include/snmp_pp/config_snmp_pp.h中打开HAVE_LIBDES的预编译开关。。
libdes库,编译前修改了Makefile文件,在CFLAGS后加了-m32选项。编译完成后,得到libdes.a文件,也没有libdes.so文件。
最上面的问题,感觉像是没有找到libdes.a文件,但不知道该如何设置。
不知道哪位前辈解决过这个问题,请不吝赐教,多谢