码迷,mamicode.com
首页 > 其他好文 > 详细

spdk dpdk编译动态库( shared library )

时间:2017-04-24 23:14:26      阅读:2643      评论:0      收藏:0      [点我收藏+]

标签:使用   color   应用程序   www   配置   2.0   files   linux   fine   

1,dpdk编译共享库

默认情况下都编译出静态库,如果想编译出动态库,把config/common_base文件中的CONFIG_RTE_BUILD_SHARED_LIB改成y即可。

 

2,spdk编译共享库

修改mk/spdk.common.mk:

# Archive $(OBJS) into $@ (.so)

# Archive $(OBJS) into $@ (.a)

# LIB_C=\

#       $(Q)echo "  LIB $(notdir $@)"; \

#       rm -f $@; \

#       ar crDs $@ $(OBJS)

LIB_C=\

        gcc -shared -Wl,-soname,$(notdir $@.1) -o $@.1 $(OBJS); \

        ln -s $(notdir $@.1) $@

// …

# define spdk_lib_list_to_files

#       $(1:%=$(SPDK_ROOT_DIR)/build/lib/libspdk_%.a)

# endef

define spdk_lib_list_to_files

        $(1:%=$(SPDK_ROOT_DIR)/build/lib/libspdk_%.so)

endef

// notdir将绝对路径中的路径名去掉,不然编译后的sonar是绝对路径,应用程序使用它的时候无法编译通过。改命令相关的manual见这里https://www.gnu.org/software/make/manual/html_node/File-Name-Functions.html#File-Name-Functions

修改Makefile,只编译library库,其他example和test等库不要编译:

#DIRS-y += lib test examples app

DIRS-y += lib

如果在编译链接的时候,发现某个函数所在的library分明在library列表中,却依然报错说undefined reference to `rte_eal_device_remove’。需要更改dpdk的导出符号配置文件,将这个符号加入到导出符号列表中。这个文件往往是*.map,如librte_eal/linuxapp/eal/rte_eal_version.map

导出符号的文档见这里:https://www.gnu.org/software/gnulib/manual/html_node/LD-Version-Scripts.html#LD-Version-Scripts

 

注:本文所有内容基于spdk16.11和dpdk16.11

spdk dpdk编译动态库( shared library )

标签:使用   color   应用程序   www   配置   2.0   files   linux   fine   

原文地址:http://www.cnblogs.com/cobbliu/p/6759074.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!