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 编译动态库( spdk compiles shared library )的更多相关文章

  1. gcc 动态编译 动态库路径

    gcc 动态编译(共享库) 动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令优点:体积小,编译快缺点:依赖性高 代码如下: [root@74-82-173-21 ...

  2. gcc 编译动态库和静态库

    Linux C 编程入门之一:gcc 编译动态库和静态库 cheungmine 2012 参考: C程序编译过程浅析 http://blog.csdn.net/koudaidai/article/de ...

  3. ndk学习8: 编译动态库

    目录: 手工编译动态库 ndk-build编译动态库(Eclipse环境)   手工编译静态库 老规矩还是先手工操作,知其然并知其所以然   需要用到的核心命令: gcc -g -c -fpic -W ...

  4. Linux gcc编译(动态库,静态库)

    1. linux 库路径: /lib , /usr/lib , /usr/local/lib 2.linux 编译静态库 a.编写源文件vi pr1.c void print1(){    print ...

  5. Linux:编译动态库时遇到的错误relocation R_X86_64_32 against `a local symbol'

    编译动态库时遇到如下错误: ... ... relocation R_X86_64_32 against `a local symbol' can not be used when making a ...

  6. netsnmp编译动态库

    .编译动态库 将写完的snmp代理程序编译生成动态库 gcc -c -fpic telnetConfig.c -o telnetConfig.o -I/usr/local/net-snmp/inclu ...

  7. Linux环境编译动态库和静态库总结

    对Linux环境动态库和静态库的一些基础知识做一些总结, 首先总结静态库的编译步骤. 1 先基于.cpp或者.c文件生成对应的.o文件 2将几个.o文件 使用ar -cr命令 生成libname.a文 ...

  8. 【VS工程设置】 编译动态库,命令行添加参数,不使用预编译头,指定该项目链接 哪种 运行库

    编译动态库 注意: 动态库: [目标文件扩展] => .dll + [配置类型] => 动态库(.dll) 静态库: [目标文件扩展] => .lib + [ 配置类型]=> ...

  9. gflags 编译动态库

    gflags 编译动态库 这里涉及到gflags的安装,原来使用 sudo apt-get install libgflags-dev 但是后面有人在环境中下载安装了libgflags的安装包,解压后 ...

随机推荐

  1. JS 父页面调子页面(2种情况),子掉父级(1种)(转)

    A :父级调用子级页面 ,非IFRAME情况,类似平级: window.open("子页面.html", "", "width=1024,height ...

  2. window.open 浏览器差异.

    首先引入 w3help的,莫的测试: 原帖地址:http://www.w3help.org/zh-cn/causes/BX1053   w3help的测试,和我的测试相互补充,应该比较完整了.悲剧的是 ...

  3. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十八)ES6.2.2 增删改查基本操作

    #文档元数据 一个文档不仅仅包含它的数据 ,也包含 元数据 —— 有关 文档的信息. 三个必须的元数据元素如下:## _index    文档在哪存放 ## _type    文档表示的对象类别 ## ...

  4. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十七)Elasticsearch-6.2.2集群安装,组件安装

    1.集群安装es ES内部索引原理: <时间序列数据库的秘密(1)—— 介绍> <时间序列数据库的秘密 (2)——索引> <时间序列数据库的秘密(3)——加载和分布式计算 ...

  5. scikit-learn工具学习 - random,mgrid,np.r_ ,np.c_, scatter, axis, pcolormesh, contour, decision_function

    yuanwen: http://blog.csdn.net/crossky_jing/article/details/49466127 scikit-learn 练习题 题目:Try classify ...

  6. [Spring boot] Autowired by name, by @Primary or by @Qualifier

    In the example we have currently: @Component public class BinarySearchImpl { @Autowired private Sort ...

  7. [React] Use React.ReactNode for the children prop in React TypeScript components and Render Props

    Because @types/react has to expose all its internal types, there can be a lot of confusion over how ...

  8. [Canvas]奔跑的马

    下载地址:https://files.cnblogs.com/files/xiandedanteng/52-WalkingHorse.rar,请用Chrome浏览器打开观看动态效果. 图例: 源码: ...

  9. Linux FastDFS 分布式文件系统安装

    Linux FastDFS 分布式文件系统安装 2013 年 3 月 11 日 – 09:21 | 930 views | 收藏  (No Ratings Yet) FastDFS是一款类Google ...

  10. it 建设工具一览

    一 基础建设清单 =============================================== 1 jira, 2 maven,nexus   http://blog.csdn.ne ...