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 $@)"; \ #    …
gcc 动态编译(共享库) 动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令优点:体积小,编译快缺点:依赖性高 代码如下: [root@74-82-173-217 shared]# cat add.cint add (int x, int y) {return x + y;} Parsed in 0.007 seconds at 12.13 KB/sadd.c 求和函数 代码如下: [root@74-82-173-217 shared]# cat prin…
Linux C 编程入门之一:gcc 编译动态库和静态库 cheungmine 2012 参考: C程序编译过程浅析 http://blog.csdn.net/koudaidai/article/details/8092647 1 准备工作 Windows7+Cygwin+gcc 在同一个目录下准备好下面3个文件,其中3-2,3-3用来生成动态库或静态库: 主调用程序源代码3-1:main.c /** * main.c */ #include <stdio.h> #include <ma…
目录: 手工编译动态库 ndk-build编译动态库(Eclipse环境)   手工编译静态库 老规矩还是先手工操作,知其然并知其所以然   需要用到的核心命令: gcc -g -c -fpic -Wall mod1.c mod2.c mod3.c gcc -g  -shared mod1.o mod2.o mod3.o -o libfoo.so gcc -g  -fpic -Wall -shared mod1.o mod2.o mod3.o -o libfoo.so   程序运行会优先从系统目…
1. linux 库路径: /lib , /usr/lib , /usr/local/lib 2.linux 编译静态库 a.编写源文件vi pr1.c void print1(){    printf("static print1() callback\n");} vi pr2.cvoid print2(){    printf("static print2() callback\n");} vi main.cint main(){    print1();  …
编译动态库时遇到如下错误: ... ... relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC ... could not read symbols: Bad value 解决办法编译器已经提示了:recompile with -fPIC 但是我们应该重新编译谁带上这个参数呢? 答案是:在编译.o文件的时候,而不是在编译生…
.编译动态库 将写完的snmp代理程序编译生成动态库 gcc -c -fpic telnetConfig.c -o telnetConfig.o -I/usr/local/net-snmp/include gcc -shared telnetConfig.o -o libtelnetConfig.so 其中/usr/local/net-snmp是安装目录,里面有include目录,包含了使用的头文件. 通过下面两条命令,查看安装目录,找到配置文件 net-snmp-config --defaul…
对Linux环境动态库和静态库的一些基础知识做一些总结, 首先总结静态库的编译步骤. 1 先基于.cpp或者.c文件生成对应的.o文件 2将几个.o文件 使用ar -cr命令 生成libname.a文件 libname.a 为静态库, name 为静态库的名字, 可以根据模块功能命名. 举个例子 在当前目录下,有一个mymethod.h文件 在mymethod.cpp里实现这两个函数 在当前目录下有一个main.cpp文件 为了方便使用,将mymethod.cpp封装成静态库和动态库 首先将my…
编译动态库 注意: 动态库: [目标文件扩展] => .dll + [配置类型] => 动态库(.dll) 静态库: [目标文件扩展] => .lib + [ 配置类型]=> 静态库(.lib) 一定要匹配!!! 否则报错 命令行添加参数 即向main()函数传递参数的方法: 右键单击要 添加参数的工程-->属性-->配置属性-->调试,在右侧"命令参数"栏输入要添加的参数,各参数间用空格分离.例如: 则传递给main函数的argc为2,其中a…
gflags 编译动态库 这里涉及到gflags的安装,原来使用 sudo apt-get install libgflags-dev 但是后面有人在环境中下载安装了libgflags的安装包,解压后直接安装: mkdir build cd build cmake .. make make test make install 网上很多博客都这样写,其实这是错误的安装方法,这种只能得到静态库. gflags 正确的安装方法是这样的: Need cmake >2.8.4 (current is 2.…