Long story short: i was working on a SNMP client on Qt, talking with a Cisco Access Point. I’ve already a Qt software, so i decided to add the Net-SNMP library to my project.
These are the steps to achieve the result:
- Download the Net-SNMP library
- Extract it wherever you want
- Download MSYS and install it
- Run MSYS, you will have a bash shell
- Now, locate the mingw compiler on Qt (see the image below)
- On the MSYS bash type these commands:
- mkdir -p /mingw
- mount c:/Qt/Tools/mingw730_64 /mingw (the path of the mingw you discovered on point 5.)
- go to the Net-SNMP source path
- ./configure –prefix=/mingw –without-openssl –without-perl-modules
- make
- make install
- Now, in the mingw Qt dir, you should have the Net-SNMP library and tools.
- Edit your .pro files and add this line: win32: LIBS += -L$$PWD/net-snmp/lib/ -lnetsnmp -lws2_32
Now you’re ready to build your project.
Some useful tips to remind:
- remember to setup the env variable MIBS, for example netsnmp_setenv(“MIBS”, “+AIRESPACE-WIRELESS-MIB”, 1);
- remember to specify the MIBS directories, for example netsnmp_set_mib_directory(QCoreApplication::applicationDirPath().toLatin1() + “/MIBS”);
- if you want to understand some problem, add these lines:
snmp_set_do_debugging(1);
snmp_enable_stderrlog ();
snmp_enable_calllog();
debug_register_tokens(“read_config,get_mib,parse”);
If you need support, don’t hesitate to add a comment below.
SwitchBot Interrutore Robot Intelligente - Controllo APP Bluetooth o Timer, Facile da Usare, Necessità SwitchBot Hub per Supportare Alexa, Google Home e il Telecomando, Automazione Domestica (Bianco)
25% OffUniversale - Funziona praticamente con qualsiasi interruttore e pulsante di qualsiasi apparecchio. Interruttore intelligente per la tua casa intelligente Timer - Usa l'App SwitchBot per programmare i timer integrati, senza telefono o Hub. Accendi e s... read more
Ciao Roberto,
ho provato a seguire la guida utilizzando MSYS2.
Nel passaggio 4) del configure durante il checking build system type ho il seguente messaggio d’errore “Invalid configuration `x86_64-pc-msys’: system `msys’ not recognized”.
A quel punto sono passato a mingw64 che mi ha consentito di terminare correttamente il configure e mi ha prodotto il makefile.
Durante il passaggio 5) lanciando il comando make, inizialmente ho dei warning del tipo “warning: undefined symbols not allowed in x86_64-w64-mingw32 shared libraries; building static only” ed infine l’operazione termina prematuramente con il seguente messaggio:
C:/Users/mjetr/OneDrive/Desktop/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -ldl
collect2.exe: error: ld returned 1 exit status
make[1]: *** [Makefile:759: snmpd.exe] Error 1
make[1]: Leaving directory ‘/c/Users/mjetr/OneDrive/Desktop/net-snmp-5.9/agent’
make: *** [Makefile:665: subdirs] Error 1
Lo stesso errore si ripercuote naturalmente sul make install del passaggio 6)
Non so onestamente cosa questi errori comportino, diciamo che in ogni caso andando successivamente a vedere nella directory di mingw Qt effettivamente sono presenti dei file di Netsnmp.
Ma quando nel mio .pro vado ad aggiungere il riferimento alle librerie del passaggio 8) nei miei sorgenti non riesco a richiamare gli header netsnmp e quindi non posso utilizzare le API netsnmp.
Avresti qualche indicazione da darmi?