Move -lnetsnmp to end of link command (after source files).
In GCC/Clang, library flags must come after the object files that
reference them for proper symbol resolution.
This fixes 'undefined symbol: init_snmp' runtime errors on Linux.
On newer glibc versions, BSD types like u_char are only available
when _DEFAULT_SOURCE or _BSD_SOURCE feature test macros are defined.
Define these macros before including any headers to ensure BSD types
are available for net-snmp headers.
Add #include <sys/types.h> before net-snmp headers to provide
u_char and other BSD-style type definitions required by net-snmp.
This fixes compilation errors in CI/Docker builds on Linux.