【ARM&Linux】Linux下静态&动态函数库设计
2018-02-02 20:36
453 查看
《Linux下静态&动态函数库设计》
环境:
ubuntu14.04 LTSwindows10 1709
(一)静态链接库
【说明】
1. 在Linux中,以【.so】结尾的文件,是动态链接库;以【.a】 结尾的文件,为静态链接库。2. Linux下进行链接时 默认是链接动态库,如果需要使用静态库,需要使用编译选项:-static,例如:
gcc -static main.c -o main
3. 本例程只是一个demo,讲述制作库的方法。
【涉及相关文件】
//filename:main.c #include <stdio.h> #include "./myadd.h" int main() { int a, b; printf("Please enter 2 number : "); scanf("%d %d", &a, &b); printf("\n\n"); printf("a + b = %d \n\n", myadd(a, b)); return 0; }
// filename : myadd.c // Creat by KunGe 2018/2/2 // #include "myadd.h" int myadd(int a, int b) { return a + b; }
//filename : myadd.h #ifndef _MY_ADD_H #define _MY_ADD_H int myadd(int a, int b); #endif
【制作使用静态库】
制作静态库
gcc –c myadd.c –o myadd.o 【-c 选项是只编译,不链接】ar cqs myadd.a myadd.o
将制作好的myadd.a 复制到/usr/lib目录下
使用静态库
GCC在链接时,默认只会链接C函数库,而对于其他的函数库,则需要使用-l选项来显示地指明需要链接。例:gcc test.c –lmyadd -o test
【-l选项表示 -lib,myadd代表你自己生成的库的名字】
(二)动态链接库
gcc –c myadd.c –o myadd.ogcc -shared -fPIC myadd.o -o libmyadd.so
将制作好的libmylib.so 复制到/usr/lib
【-fpic】使输出的对象模块是按照可重定位地址方式生成的。
【-shared】 指明产生动态链接库
相关文章推荐
- 【ARM&Linux】并发服务器设计
- java中静态成员函数&单例设计模式
- OOAD&UML_OOAD概述_UML_OO设计原则_OO设计模式_分析阶段静态建模_分析阶段动态建模_设计阶段静态建模_设计阶段动态建模
- java设计模式之代理模式 (静态&动态)
- 【ARM&Linux】按键中断驱动程序设计
- 设计模式之静态代理&动态代理
- Linux - 动态(Dynamic)与静态(Static)函数库
- linux&Windows动态链接库技术实现和设计程序常用的技术
- 【转】深入理解C++的动态绑定和静态绑定 & 不要重定义虚函数中的默认参数
- Linux 下的静态(函数)库、动态(函数)库
- Linux - 动态(Dynamic)与静态(Static)函数库
- linux编译动态&静态opencv
- make install时"arm-linux-ranlib command not found"
- linux下加载动态库函数
- linux链接库(动态/静态)的使用详解
- Linux 静态与动态链接库
- 基于ARM+Linux 2.6内核的控制系统驱动设计
- 【linux内核2.4.26·网络】IP分片重组过程函数解析
- Delphi语言学习9-函数的静态和动态加载
- 基于嵌入式linux和ARM设计的无线家庭网关