C программа с использованием net -snmp не компилируется - PullRequest
1 голос
/ 24 января 2020

Я установил net -snmp 5.8 на машину с Ubuntu 16.0.4, а затем проверил правильную установку:

snmpget --version

NET -SNMP версия : 5.8

Далее я пытаюсь написать и скомпилировать мой первый пример программы SNMP C.

Я скопировал тот, который включен в качестве примера в учебное пособие от Бена Роквуда (" Net -SNMP Руководство по программированию), и я попытался скомпилировать его с помощью команды:

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

Как указано в этом руководстве.

При этом я получаю ошибки:

g cc: ошибка: нераспознанный параметр командной строки '--cflags' 'g cc: ошибка: нераспознанный параметр командной строки' --libs '' g cc: ошибка: нераспознанный параметр командной строки '--external-libs' '

Затем я изменил команду g cc на:

g cc 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: неоднозначное перенаправление

Что Wron г на г cc звонок? Любые комментарии или предложения приветствуются.

Ответы [ 2 ]

0 голосов
/ 26 января 2020

Я попробовал команду, которую вы мне сказали :

g cc $ (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. * 1060 указывать: '

/ home / jose / NETWORK_PROTOCOLS / ej_02_SNMP / snmp_test. c: 38: неопределенная ссылка на `add_mibdir'

/ home / jose / NETWORK_PROTOCOLS / ej_02_SNMP / 10 106262 / sn / 10 106262 : 39: неопределенная ссылка на `read_mib '

/ home / jose / NETWORK_PROTOCOLS / ej_02_SNMP / snmp_test. c: 40: неопределенная ссылка на` snmp_pdu_create'

/ home / jose / NETWORK_RO S / 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: * undefined. ссылка на `snmp_add_null_var '

/ home / jose / NETWORK_PROTOCOLS / ej_02_SNMP / snmp_test. c: 48: неопределенная ссылка на` snmp_synch_response'

/ home / jose / NETWOR_Stest_PT . 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, чтобы получить такой результат: * 104 5 *

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

/ usr / bin / ld: не удается найти -lsnmp

collect2: ошибка: ld вернул 1 состояние выхода

0 голосов
/ 24 января 2020

Вы, вероятно, используете неправильные галочки. Используйте этот метод для подстановки команд, он немного безопаснее:

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

Показанные здесь тики () - неправильные, вам нужны следующие: `. Однако я предпочитаю синтаксис $(), который имеет дополнительное преимущество в том, что он является вложенным.

...