c - 使用 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-libs
snmp_test.c -o snmp_test
并得到错误:
bash: net-snmp-config --external-libs
: 不明确的重定向
gcc 调用有什么问题?欢迎任何意见或建议。
解决方案
我已经尝试过你告诉我的命令:
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 个退出状态
推荐阅读
- z3 - 如何有效地断言两个大集合不相交?
- javascript - 验证是否使用 GraalVM
- docker - Dockerfile 中的命令和 docker-compose 中的命令
- python - spaCy,准备训练数据:doc.char_span 返回“无”
- pandas - 将缺失的数据添加到 Dataframe
- reactjs - 从没有 id 字段的响应中使用查询键缓存?
- javascript - 代码在 Internet Explorer 中不起作用的问题
- fonts - 造型木偶师.pdf
- python - 有没有办法从 Django 管理员打开/关闭特定字段?
- matlab - 查找 BW 图像边界上的坐标