使用NetSNMP的C程序不编译

使用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

我已经在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-libs‘ snmp_test.c -o snmp_test
如本教程所示

当执行此操作时,我会得到错误:

gcc:错误:无法识别的命令行选项“--cflags” gcc:错误:无法识别的命令行选项“--libs” gcc:错误:无法识别的命令行选项“--external libs”

然后,我将gcc命令更改为:

gcc
netsnmp配置--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部分:错误