在 Solaris 11 上构建 net-snmp 的问题

Issue with net-snmp build on Solaris 11

我正在 Solaris11 sparc 上构建 net-snmp 5.7.3。我将我的路径设置为:

/usr/local/lib:/bin:/usr/bin:/usr/dev_infra/platform/bin:/usr/dev_infra/generic/bin:/usr/local/bin:/usr/X11R6/bin:/usr/local/ade/bin: /usr/sfw/bin:/usr/ccs/bin:/opt/csw/bin:/opt/csw/gnu:/usr/sbin:/usr/bin:/usr/ccs/bin/ar

I 运行 ./configure --prefix=/opt 使用默认选项并成功。在那之后,当我制作时,我收到以下错误消息,感谢任何帮助。

libtool: compile:  gcc -I../include -I. -I../snmplib -fno-strict-aliasing -g -O2 -Usolaris2 -Dsolaris2=solaris2 -c keytools.c  -fPIC -DPIC -o .libs/keytools.o
keytools.c: In function ‘generate_Ku’:
keytools.c:153:9: warning: assignment makes pointer from integer without a cast
keytools.c:161:9: error: invalid use of void expression
keytools.c:166:13: error: invalid use of void expression
*** Error code 1
make: Fatal error: Command failed for target `keytools.lo'
Current working directory /scratch/kkumsati/net-snmp/snmplib
*** Error code 1
The following command caused the error:
if test "snmplib  agent apps man local mibs" != ""; then \
        it="snmplib  agent apps man local mibs" ; \
        for i in $it ; do \
                echo "making all in `pwd`/$i"; \
                ( cd $i ; make ) ; \
                if test $? != 0 ; then \
                        exit 1 ; \
                fi  \
        done \
fi
make: Fatal error: Command failed for target `subdirs'

在源文件夹中查找 README.solaris 文件。它有 'Compiling net-snmp' 部分。 在自述文件中,您可以找到以下内容:

You need to set your $PATH.  This is extremely important
because otherwise there may be conflicts between the various
components of the development environment.

PATH 错误是你的问题。

另一个可能的问题是您系统中的旧 openssl headers。 关于函数 EVP_MD_CTX_create() 的错误(keytools.c:153:9 中的错误),此函数在 Solaris 文件 /usr/include/openssl/evp 中声明。 h,此文件包含在包 pkg:/library/security/openssl 中。我 OS 上的这个包的版本是 1.0.1.18-0.175.3.5.0.5.0。 我建议您更新 OS,或打包 pkg:/library/security/openssl 或尝试 运行 使用 --with-openssl=internal 选项配置脚本。

同时更新gcc,我用的是这个版本

pkg install developer/gcc-48 

export PATH=/usr/sbin:/usr/local/bin:/usr/ccs/bin:/usr/bin:
./configure --prefix=/opt --with-mib-modules="ucd-snmp/lmSensors \
            ucd-snmp/diskio smux mibII/mta_sendmail" --with-cc=gcc
gmake

这里我收到了一个错误:

/usr/include/sys/processor.h:188:45: error: unknown type name 'kthread_t'
 extern boolean_t i_processor_affinity_check(kthread_t *, struct cpu *);
                                         ^
/usr/include/sys/processor.h:189:37: error: unknown type name 'kthread_t'
 extern int i_processor_affinity_one(kthread_t *, id_t, boolean_t);
                                 ^
/usr/include/sys/processor.h:190:33: error: unknown type name 'kthread_t'
 extern int i_processor_affinity(kthread_t *, uint_t *, id_t *, uint32_t *,
                             ^

要解决此编辑文件 agent/mibgroup/host/data_access/swrun_procfs_psinfo.c 并添加到其 header 第 26 行(问题行之前):

#include <sys/processor.h>
#include <sys/procset.h>
#include <thread.h>

Link关于这个bug

然后重复

gmake
gmake test
gmake install;  #this command with root permissons 

我在 SPARC 上成功了。