首页 > 解决方案 > 使用 net-snmp 的 C 程序无法编译

问题描述

我已经在 Ubuntu 16.0.4 机器上安装了 net-snmp 5.8,然后我检查了正确的安装:

snmpget --版本

NET-SNMP 版本:5.8

接下来,我正在尝试编写和编译我的第一个 SNMP C 程序示例。

我已经复制了 Ben Rockwood 教程中的示例(“The Net-SNMP Programming Guide”),并尝试使用以下命令对其进行编译:

gcc ‘net-snmp-config --cflags‘ ‘net-snmp-config --libs‘ \
> ‘net-snmp-config --external-libs‘ snmp_test.c -o snmp_test

如本教程所示。

什么时候做,我得到错误:

gcc:错误:无法识别的命令行选项'--cflags'' gcc:错误:无法识别的命令行选项'--libs'' gcc:错误:无法识别的命令行选项'--external-libs''</p>

然后我将 gcc 命令更改为:

海合会net-snmp-config --cflags net-snmp-config --libs\

net-snmp-config --external-libssnmp_test.c -o snmp_test

并得到错误:

bash: net-snmp-config --external-libs: 不明确的重定向

gcc 调用有什么问题?欢迎任何意见或建议。

标签: cgccsnmp

解决方案


我已经尝试过你告诉我的命令

gcc $(net-snmp-config --cflags) $(net-snmp-config --libs) $(net-snmp-config --external-libs) snmp_test.c -o snmp_test

得到这些错误:

/tmp/ccKrUliA.o:在函数“main”中:

/home/jose/NETWORK_PROTOCOLS/ej_02_SNMP/snmp_test.c:29:未定义对“init_snmp”的引用

/home/jose/NETWORK_PROTOCOLS/ej_02_SNMP/snmp_test.c:31:未定义对“snmp_sess_init”的引用

/home/jose/NETWORK_PROTOCOLS/ej_02_SNMP/snmp_test.c:36:未定义对“snmp_open”的引用

/home/jose/NETWORK_PROTOCOLS/ej_02_SNMP/snmp_test.c:38:未定义对“add_mibdir”的引用

/home/jose/NETWORK_PROTOCOLS/ej_02_SNMP/snmp_test.c:39:未定义对“read_mib”的引用

/home/jose/NETWORK_PROTOCOLS/ej_02_SNMP/snmp_test.c:40:未定义对“snmp_pdu_create”的引用

/home/jose/NETWORK_PROTOCOLS/ej_02_SNMP/snmp_test.c:42:未定义对“read_objid”的引用

/home/jose/NETWORK_PROTOCOLS/ej_02_SNMP/snmp_test.c:43:未定义对“snmp_add_null_var”的引用

/home/jose/NETWORK_PROTOCOLS/ej_02_SNMP/snmp_test.c:45:未定义对“read_objid”的引用

/home/jose/NETWORK_PROTOCOLS/ej_02_SNMP/snmp_test.c:46:未定义对“snmp_add_null_var”的引用

/home/jose/NETWORK_PROTOCOLS/ej_02_SNMP/snmp_test.c:48:未定义对“snmp_synch_response”的引用

/home/jose/NETWORK_PROTOCOLS/ej_02_SNMP/snmp_test.c:51:未定义对“print_value”的引用

/home/jose/NETWORK_PROTOCOLS/ej_02_SNMP/snmp_test.c:53:未定义对“snmp_free_pdu”的引用

/home/jose/NETWORK_PROTOCOLS/ej_02_SNMP/snmp_test.c:54:未定义对“snmp_close”的引用

collect2:错误:ld 返回 1 个退出状态

然后我尝试添加 -L 和 -lsnmp,结果如下:

jose@jose-VirtualBox:~/NETWORK_PROTOCOLS/ej_02_SNMP$ gcc -L/usr/locallib/ -lsnmp $(net-snmp-config --cflags) $(net-snmp-config --libs) $(net-snmp-配置 --external-libs) snmp_test.c -o snmp_test

/usr/bin/ld: 找不到 -lsnmp

collect2:错误:ld 返回 1 个退出状态


推荐阅读