spdk 编译动态库( spdk compiles shared library )
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 )的更多相关文章
- gcc 动态编译 动态库路径
gcc 动态编译(共享库) 动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令优点:体积小,编译快缺点:依赖性高 代码如下: [root@74-82-173-21 ...
- gcc 编译动态库和静态库
Linux C 编程入门之一:gcc 编译动态库和静态库 cheungmine 2012 参考: C程序编译过程浅析 http://blog.csdn.net/koudaidai/article/de ...
- ndk学习8: 编译动态库
目录: 手工编译动态库 ndk-build编译动态库(Eclipse环境) 手工编译静态库 老规矩还是先手工操作,知其然并知其所以然 需要用到的核心命令: gcc -g -c -fpic -W ...
- Linux gcc编译(动态库,静态库)
1. linux 库路径: /lib , /usr/lib , /usr/local/lib 2.linux 编译静态库 a.编写源文件vi pr1.c void print1(){ print ...
- 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 ...
- netsnmp编译动态库
.编译动态库 将写完的snmp代理程序编译生成动态库 gcc -c -fpic telnetConfig.c -o telnetConfig.o -I/usr/local/net-snmp/inclu ...
- Linux环境编译动态库和静态库总结
对Linux环境动态库和静态库的一些基础知识做一些总结, 首先总结静态库的编译步骤. 1 先基于.cpp或者.c文件生成对应的.o文件 2将几个.o文件 使用ar -cr命令 生成libname.a文 ...
- 【VS工程设置】 编译动态库,命令行添加参数,不使用预编译头,指定该项目链接 哪种 运行库
编译动态库 注意: 动态库: [目标文件扩展] => .dll + [配置类型] => 动态库(.dll) 静态库: [目标文件扩展] => .lib + [ 配置类型]=> ...
- gflags 编译动态库
gflags 编译动态库 这里涉及到gflags的安装,原来使用 sudo apt-get install libgflags-dev 但是后面有人在环境中下载安装了libgflags的安装包,解压后 ...
随机推荐
- android Logger 一二三
我们在开发Android应用的过程中可以很方便地使用Log信息来调试程序,这都归功于Android的Logger驱动为用户层提供的Log支持.无论是底层的源代码还是上层的应用,我们都可以使用Logge ...
- 深挖android low memory killer
对于PC来说,内存是至关重要.如果某个程序发生了内存泄漏,那么一般情况下系统就会将其进程Kill掉.Linux中使用一种名称为OOM(Out Of Memory,内存不足)的机制来完成这个任务,该机制 ...
- 【Kafka】Kafka-配置参数详解-参数调优
Kafka-配置参数详解-参数调优 kafka 目录_百度搜索 为什么kafka使用磁盘而不是内存 - CSDN博客 Kafka 配置说明 - 風吹云动 - 博客园 kafka生产服务器配置 - Or ...
- Sublime 格式化代码 设置快捷键以及插件使用
实在sublime中已经自建了格式化按钮: Edit -> Line -> Reindent 只是sublime并没有给他赋予快捷键,所以只需加上快捷键即可 Preference ...
- 使用Nexus管理maven仓库,setting文件理解
来到新公司对很多陌生的技术一头雾水,以前在工作中没有真正使用过maven,于是强迫自己蛋定下来一个一个的突破,下面是我对maven的setting配置文件的理解,由于是现学的,难免可能会理解偏差,还请 ...
- MogileFS与FastDFS的个人见解
MogileFS与FastDFS的个人见解 六月 9, 2013 1 条评论 MogileFS & FastDFS 为两个开源分布式文件系统,都主要适用于互联网文件共享,上传,下载等功能,主要 ...
- Discuz常见小问题-如何批量加精,置顶帖子
批量选中帖子,然后置顶和精华都可以勾选 完成之后的效果
- C#中RSA加密解密和签名与验证的实现
RSA加密算法是一种非对称加密算法.在公钥加密标准和电子商业中RSA被广泛使用.RSA是1977年由罗纳德•李维斯特(Ron Rivest).阿迪•萨莫尔(Adi Shamir)和伦纳德•阿德曼(Le ...
- C++ 第六课:C/C++关键字及其用法
asm 插入一个汇编指令. auto 声明一个本地变量. bool 声明一个布尔型变量. break 结束一个循环. case 一个switch语句的一部分. catch 处理 thrown 产生的异 ...
- JAVA i++于++i的区别
大家看一下下面一个程序: 一.问题说明 Test.java public class Test { public static void main(String[] args) { int i = 1 ...