Bonjour à tous,

Je suis en train de devlopper en Langage C avec l'API de NET SNMP, je rencontre un probleme et depuis 4 jours je suis bloqué.

voici l'erreur que j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 gcc -I. `net-snmp-config --cflags`   -c -o snmpdemoapp.o snmpdemoapp.c
gcc -o snmpdemoapp snmpdemoapp.o `net-snmp-config --libs`
snmpdemoapp.o: In function `main':
/home/ubuntu/Desktop/ProgrammeTest/snmpdemoapp.c:58: undefined reference to `netsnmp_create_table_data_row'
/home/ubuntu/Desktop/ProgrammeTest/snmpdemoapp.c:60: undefined reference to `netsnmp_set_row_column'
/home/ubuntu/Desktop/ProgrammeTest/snmpdemoapp.c:61: undefined reference to `netsnmp_mark_row_column_writable'
/home/ubuntu/Desktop/ProgrammeTest/snmpdemoapp.c:62: undefined reference to `netsnmp_set_row_column'
/home/ubuntu/Desktop/ProgrammeTest/snmpdemoapp.c:63: undefined reference to `netsnmp_mark_row_column_writable'
/home/ubuntu/Desktop/ProgrammeTest/snmpdemoapp.c:64: undefined reference to `netsnmp_table_dataset_add_row'
/home/ubuntu/Desktop/ProgrammeTest/snmpdemoapp.c:65: undefined reference to `netsnmp_register_auto_data_table'
collect2: error: ld returned 1 exit status
make: *** [snmpdemoapp] Error 1
Mon Makefile :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
CC=gcc

OBJS1=snmpdemoapp.o
OBJS2=example-demon.o nstAgentSubagentObject.o
OBJS3=asyncapp.o
TARGETS=example-demon snmpdemoapp asyncapp

CFLAGS=-I. `net-snmp-config --cflags`
BUILDLIBS=`net-snmp-config --libs`
BUILDAGENTLIBS=`net-snmp-config --agent-libs`

# shared library flags (assumes gcc)
DLFLAGS=-fPIC -shared

all: $(TARGETS)

snmpdemoapp: $(OBJS1)
	$(CC) -o snmpdemoapp $(OBJS1) $(BUILDLIBS)

asyncapp: $(OBJS3)
	$(CC) -o asyncapp $(OBJS3) $(BUILDLIBS)

example-demon: $(OBJS2)
	$(CC) -o example-demon $(OBJS2)  $(BUILDAGENTLIBS)

clean:
	rm $(OBJS2) $(OBJS2) $(TARGETS)

nstAgentPluginObject.so: nstAgentPluginObject.c Makefile
	$(CC) $(CFLAGS) $(DLFLAGS) -c -o nstAgentPluginObject.o nstAgentPluginObject.c
	$(CC) $(CFLAGS) $(DLFLAGS) -o nstAgentPluginObject.so nstAgentPluginObject.o

et voici mon programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 #include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/net-snmp-features.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include <net-snmp/library/oid.h>
#include <net-snmp/library/types.h>
#include <net-snmp/definitions.h>
#include <net-snmp/library/snmp_api.h>


int main(int argc, char ** argv)
{

     netsnmp_table_data_set *table_set;
     netsnmp_table_row *row;

    table_set->allow_creation = 1;

    netsnmp_session session, *ss;
    netsnmp_pdu *pdu;
    netsnmp_pdu *response;
    oid anOID[MAX_OID_LEN];
    size_t anOID_len;


    netsnmp_variable_list *vars;
    int status;
    int count=1;

    init_snmp("snmpdemoapp");
    snmp_sess_init( &session );                   /* set up defaults */
    session.peername = strdup("localhost");

    session.version = SNMP_VERSION_1;
    session.community = "public";
    session.community_len = strlen(session.community);


    SOCK_STARTUP;
    ss = snmp_open(&session);                     /* establish the session */

    if (!ss) {
      snmp_sess_perror("ack", &session);
      SOCK_CLEANUP;
      exit(1);
    }

     anOID_len = MAX_OID_LEN;
      if (!snmp_parse_oid(".1.3.6.1.4.1.8072.2.2.1", anOID, &anOID_len)) {
          snmp_perror(".1.3.6.1.4.1.8072.2.2.1");
          SOCK_CLEANUP;
          exit(1);
        }
    
         pdu = snmp_pdu_create(SNMP_MSG_GET); // pour Moi PDU SET_REQ_MSG


        row = netsnmp_create_table_data_row();
     	netsnmp_table_row_add_index(row, ASN_OCTET_STR, "snmpv3",strlen("snmpv3"));//Index
     	netsnmp_set_row_column(row, 2, ASN_OCTET_STR,"Russ Mundy", strlen("Russ Mundy"));//colonne2
    	netsnmp_mark_row_column_writable(row, 2, 1);        
    	netsnmp_set_row_column(row, 3, ASN_OCTET_STR, "David Harrington",strlen("David Harrington")); //colonne3
    	netsnmp_mark_row_column_writable(row, 3, 1);       
    	netsnmp_table_dataset_add_row(table_set, row);
    	netsnmp_register_auto_data_table(table_set, NULL);// Enregistrer la ligne dans la table
        DEBUGMSGTL(("example_data_set", "Done initializing.\n"));
 
  
    snmp_add_null_var(pdu, anOID, anOID_len);
    status = snmp_synch_response(ss, pdu, &response);


    if (response)
      snmp_free_pdu(response);
    snmp_close(ss);

    SOCK_CLEANUP;
    return (0);
}