使用NetSNMP的C程序不编译
我已经在Ubuntu 16.0.4机器上安装了net snmp 5.8,然后检查了正确的安装: snmpget——版本 NET-SNMP版本:5.8 接下来,我将尝试编写和编译我的第一个SNMP C程序示例 我从Ben Rockwood(“网络SNMP编程指南”)中复制了教程中的示例,并尝试使用以下命令编译它:使用NetSNMP的C程序不编译,c,gcc,snmp,C,Gcc,Snmp,我已经在Ubuntu 16.0.4机器上安装了net snmp 5.8,然后检查了正确的安装: snmpget——版本 NET-SNMP版本:5.8 接下来,我将尝试编写和编译我的第一个SNMP C程序示例 我从Ben Rockwood(“网络SNMP编程指南”)中复制了教程中的示例,并尝试使用以下命令编译它: gcc ‘net-snmp-config --cflags‘ ‘net-snmp-config --libs‘ \ > ‘net-snmp-config --external-li
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”
然后,我将gcc命令更改为:
gccnetsnmp配置--cflags
netsnmp配置--libs
\
net snmp config--外部libs
snmp\u test.c-o snmp\u test
并获取错误:
bash:netsnmp配置--外部libs
:不明确的重定向
gcc调用有什么问题?欢迎提供任何意见或建议。您可能使用了错误的标记。使用此方法替换命令会更安全一些:
gcc $(net-snmp-config --cflags) $(net-snmp-config --libs) $(net-snmp-config --external-libs) snmp_test.c -o snmp_test
这里显示的记号(
“
)是错误的,您需要的是:`
。但是,我更喜欢$()
语法,它还有一个额外的优点,即它是可嵌套的。您可能使用了错误的记号。使用此方法替换命令会更安全一些:
gcc $(net-snmp-config --cflags) $(net-snmp-config --libs) $(net-snmp-config --external-libs) snmp_test.c -o snmp_test
这里显示的记号(
“
)是错误的,您需要的是:`
。但是,我更喜欢$()
语法,它还有一个额外的优点,就是它是可嵌套的。我尝试了您告诉我的命令。:
gcc$(网络snmp配置--cflags)$(网络snmp配置--libs)$(网络snmp配置--外部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\u PROTOCOLS/ej\u 02\u SNMP/SNMP\u test.c:43:对“SNMP\u add\u null\u 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\u PROTOCOLS/ej\u 02\u SNMP$gcc-L/usr/locallib/-lsnmp$(net SNMP config--cflags)$(net SNMP config--libs)$(net SNMP config--external libs)SNMP\u test.c-o SNMP\u test
/usr/bin/ld:找不到-lsnmp
collect2:错误:ld返回1个退出状态我已尝试执行您告诉我的命令: gcc$(网络snmp配置--cflags)$(网络snmp配置--libs)$(网络snmp配置--外部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\u PROTOCOLS/ej\u 02\u SNMP/SNMP\u test.c:43:对“SNMP\u add\u null\u 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\u PROTOCOLS/ej\u 02\u SNMP$gcc-L/usr/locallib/-lsnmp$(net SNMP config--cflags)$(net SNMP config--libs)$(net SNMP config--external libs)SNMP\u test.c-o SNMP\u test /usr/bin/ld:找不到-lsnmp 第2部分:错误