欢迎来到 DPDK交流社区 ,有什么问题可以尽管在这里提问,您将会收到社区其他成员的回答;也可以将您的总结写在这里,为社区其他成员提供帮助。 (QQ交流群:127163755)

cmakelist dpdk使用动态库造成网卡识别不了的情况

+1 投票
project(SpeedTest)                                #项目名称
cmake_minimum_required(VERSION 2.8)                #指定cmake最低版本
#SET(CMAKE_INSTALL_PREFIX /usr/local/testmain)    #设置安装目录
SET(CMAKE_CXX_COMPILER "g++")

SET(RTE_SDK $ENV{RTE_SDK})
message(STATUS "RTE_SDK path:${RTE_SDK}")

IF(NOT RTE_SDK)
    message(FATAL_ERROR "please set RTE_SDK path!")
ENDIF(NOT RTE_SDK)

#头文件目录
include_directories(${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/include)
include_directories("${RTE_SDK}/include")
message(STATUS "RTE_SDK include path:${RTE_SDK}/include")

#lib连接文件目录
link_directories(${PROJECT_BINARY_DIR}/lib /usr/local/lib)
link_directories("${RTE_SDK}/lib")
message(STATUS "RTE_SDK include path:${RTE_SDK}/lib")

#指定编译器 参数
SET(CMAKE_CXX_FLAGS "-ggdb -ffunction-sections -O0 -include $(RTE_SDK)/include/rte_config.h  -msse4.2")   
#在gcc中添加c99宏定义
add_definitions(--std=c99)

#将当期目录下的所有源文件添加变量APP_SRC中,也可以一个一个的添加但比较麻烦
AUX_SOURCE_DIRECTORY(. APP_SRC)                        

#指定编译目标及其源文件
add_executable(SpeedTest ${APP_SRC})

#指定需要连接的lib文件  注意 这里对于几个驱动库需要强制引用  否则 会造成获取网卡总数为0的情况
target_link_libraries(SpeedTest -Wl,--whole-archive
    pthread     
    libethdev.a
    librte_acl.a
    librte_pmd_af_packet.a
    librte_cfgfile.a
    librte_cmdline.a
    librte_distributor.a
    librte_eal.a
    librte_hash.a
    librte_ip_frag.a
    librte_jobstats.a
    librte_kni.a
    librte_kvargs.a
    librte_lpm.a
    librte_malloc.a
    librte_mbuf.a
    librte_mempool.a
    librte_meter.a
    librte_pipeline.a
    librte_pmd_bond.a
    librte_pmd_e1000.a
    librte_pmd_enic.a
    librte_pmd_fm10k.a
    librte_pmd_i40e.a
    librte_pmd_ixgbe.a
    librte_pmd_null.a
    librte_pmd_ring.a
    librte_pmd_virtio_uio.a
    librte_pmd_vmxnet3_uio.a
    librte_port.a
    librte_power.a
    librte_reorder.a
    librte_ring.a
    librte_sched.a
    librte_table.a
    librte_timer.a
    rt
    m
    dl
    -Wl,--no-whole-archive)

#设置编译输出文件目录
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

 

欢迎加入DPDK交流群:127163755
最新提问 5月 6, 2016 分类:经验之谈 | 用户: oops (2,170 分)

1个回答

0 投票

这是哪个版本上测试的?试了下16.07,不行啊,全部--whole-archive的话,link的时候会有大量的重复定义。

最新回答 10月 6, 2016 用户: coding (140 分)
解决了,不能把libdpdk.a加到--whole-archive列表里
...