代码之家  ›  专栏  ›  技术社区  ›  PhoenixBlue

CMAKE中的net snmp标志

  •  0
  • PhoenixBlue  · 技术社区  · 7 年前

    在此之前,我只想说我对 CMAKE ,几乎从未使用过,但现在被迫。。。

    我正在尝试在以前的项目中使用snmp功能 Net-SNMP 图书馆但首先,我写了一个简单的代码来测试我的函数。根据库教程,我必须这样编译代码:

    首先,我必须创建对象文件:

    gcc -I. `net-snmp-config --cflags`   -c -o tfsnmpset.o tfsnmpset.c
    

    然后,我必须生成可执行文件:

    gcc -o tfsnmpset tfsnmpset.o `net-snmp-config --libs`
    

    通过这样做,程序可以完美地编译,一切都很好。 现在,我想将这段代码合并到的项目使用 CMakeLists.txt 生成它的makefile。

    我的问题是,我如何在我的 克马克主义者。txt ?

    When creating object files: `net-snmp-config --cflags` 
    When generating executable: `net-snmp-config --libs`
    

    实际上,我试图用我的代码构建一个库 网络管理协议 我可以在我的主要项目中使用:

    cmake_minimum_required(VERSION 3.12)
    project(snmp_daemon C)
    
    set(CMAKE_C_STANDARD 99)
    SET(CMAKE_C_COMPILER /usr/bin/gcc)
    set(CMAKE_C_FLAGS  "${CMAKE_C_FLAGS} -I. `net-snmp-config --cflags`" )
    add_library(tfsnmpset tfsnmp.c tfsnmp.h)
    add_executable(snmp_daemon main.c ./tfsnmp.h)
    target_link_libraries(snmp_daemon tfsnmpset)
    

    错误:

    /media/user/xtra/apps/clion-2018.2.1/bin/cmake/linux/bin/cmake --build /home/fabrice/projects/snmp-daemon/cmake-build-debug --target snmp_daemon -- -j 2
    [ 25%] Linking C static library libtfsnmpset.a
    [ 50%] Built target tfsnmpset
    [ 75%] Linking C executable snmp_daemon
    libtfsnmpset.a(tfsnmp.c.o): In function `tfsnmpset':
    /home/user/projects/snmp-daemon/tfsnmp.c:121: undefined reference to `snmp_parse_args'
    /home/user/projects/snmp-daemon/tfsnmp.c:147: undefined reference to `snmp_get_do_debugging'
    /home/user/projects/snmp-daemon/tfsnmp.c:147: undefined reference to `debugmsgtoken'
    /home/user/projects/snmp-daemon/tfsnmp.c:147: undefined reference to `debugmsg'
    /home/user/projects/snmp-daemon/tfsnmp.c:147: undefined reference to `debugmsgtoken'
    /home/user/projects/snmp-daemon/tfsnmp.c:147: undefined reference to `debugmsg'
    /home/user/projects/snmp-daemon/tfsnmp.c:194: undefined reference to `snmp_open'
    /home/user/projects/snmp-daemon/tfsnmp.c:199: undefined reference to `snmp_sess_perror'
    /home/user/projects/snmp-daemon/tfsnmp.c:207: undefined reference to `snmp_pdu_create'
    /home/user/projects/snmp-daemon/tfsnmp.c:210: undefined reference to `snmp_parse_oid'
    /home/user/projects/snmp-daemon/tfsnmp.c:211: undefined reference to `snmp_perror'
    /home/user/projects/snmp-daemon/tfsnmp.c:214: undefined reference to `snmp_add_var'
    /home/user/projects/snmp-daemon/tfsnmp.c:216: undefined reference to `snmp_perror'
    /home/user/projects/snmp-daemon/tfsnmp.c:222: undefined reference to `snmp_close'
    /home/user/projects/snmp-daemon/tfsnmp.c:230: undefined reference to `snmp_synch_response'
    /home/user/projects/snmp-daemon/tfsnmp.c:236: undefined reference to `print_variable'
    /home/user/projects/snmp-daemon/tfsnmp.c:239: undefined reference to `snmp_errstring'
    /home/user/projects/snmp-daemon/tfsnmp.c:247: undefined reference to `fprint_objid'
    /home/user/projects/snmp-daemon/tfsnmp.c:257: undefined reference to `snmp_sess_perror'
    /home/user/projects/snmp-daemon/tfsnmp.c:262: undefined reference to `snmp_free_pdu'
    /home/user/projects/snmp-daemon/tfsnmp.c:263: undefined reference to `snmp_close'
    collect2: error: ld returned 1 exit status
    CMakeFiles/snmp_daemon.dir/build.make:84: recipe for target 'snmp_daemon' failed
    make[3]: *** [snmp_daemon] Error 1
    CMakeFiles/Makefile2:72: recipe for target 'CMakeFiles/snmp_daemon.dir/all' failed
    make[2]: *** [CMakeFiles/snmp_daemon.dir/all] Error 2
    CMakeFiles/Makefile2:84: recipe for target 'CMakeFiles/snmp_daemon.dir/rule' failed
    make[1]: *** [CMakeFiles/snmp_daemon.dir/rule] Error 2
    Makefile:118: recipe for target 'snmp_daemon' failed
    make: *** [snmp_daemon] Error 2
    
    0 回复  |  直到 7 年前
        1
  •  4
  •   TylerH Ash Burlaczenko    7 年前

    您应该链接到snmp库

    find_library(NETSNMPAGENT "netsnmpagent")
    
    find_library(NETSNMPMIBS "netsnmpmibs")
    
    find_library(NETSNMP "netsnmp")
    
    target_link_libraries(snmp_daemon tfsnmpset ${NETSNMPAGENT} ${NETSNMPMIBS} ${NETSNMP})
    
    推荐文章