静态、动态函数库的设计
Linux应用程序需要调用外部函数,主要来源:系统调用、函数库。
函数库的链接方式有:静态函数库、动态函数库两种!
动态函数库:副档名为 .so,文件放置于"/lib/"目录中。 通过内存链接的方式进行调用,避免重复复制,灵活,节省运行空间,主推 --->>>不可独立运行
静态函数库:副档名为 .a,文件放置于"/usr/lib/"目录中。 是把整个包 括入程序里的,多进程运行时重复复制到所需的地方,程序占存比较大,升级麻烦 --->>>编译后的执行程序可独立运行。
Linux下的库函数链接方式默认是动态函数库,链接静态库需加上“ -static ”选项。
---------------------------------------------------------------------------------------------------------------------------------------------------------
命名有两个:链接名(myilb)和库文件命名(libmyilb),其中库文件名=“ lib + 链接名”
链接名(myilb.o):作为函数库链接,GCC默认链接C函数库,其他库需加“ -l ”,“ gcc (static) -lmylib test.c -o test ”(编译用);
库文件名(libmylib.so / libmylib.a):最后生成的函数库文件名字,用于存储于系统目录/usr/lib/或lib/内;
动态函数库设计:
1)gcc -c mylib.c -o mylib.o //将函数文件"-c"不完全编译,"-o"定名mylib.o链接 2)gcc -share -fPIC mylib.o -o libmylib.so //制作成动态函数库,“-o”定名为libmylib.so// -fPIC 规定输出对象的方式 -share指明产生动态库 3)cp libmylib.so /lib //动态库文件置于指定目录下
静态函数库设计:
1)gcc -c mylib.c -o mylib.o //将函数文件"-c"不完全编译,"-o"定名mylib.o链接 2)ar cqs libmylib.a mylib.o //制作成静态函数库,定名为libmylib.a// ar cqs 指令是生成库文件的意思 3)cp libmylib.so /usr/lib //静态库文件置于指定目录下
以上动、静态函数库均制作完成!
欲使用自己制作的库函数,在要使用库函数的.c文件的目录下添加.h文件,里面声明一下要用到的库函数
eg:" touch mylib.h " -> mylib.h文件内声明" int name (int a, float b); "等 -> 在应用程序中加入头文件" #include <mylib.h> "即可。
步骤:
1.制定静/动态函数库;
2.库函数文件复制至对应的目录中,并添加 name.h 文件声明库函数;
3.应用程序中加入自制库函数的头文件" #include <name.h> "即可使用;
4,编译完成。
动态:gcc test.c -lmylib -o test; 静态: gcc test.c -static -lmylib -o test;
转载于:https://www.cnblogs.com/hjh-666/p/11196586.html
静态、动态函数库的设计相关推荐
- 静态库,动态库是啥,有啥区别(静态函数库/动态函数库)
因之前初学接触这个概念的时候无法直观的理解,询问多人也得到类似如下回复:静态库就是静态库,动态库就是动态库.一个编译一个不编译等类似的回复.伪善的人太多,披着"有问题可以问我"的外 ...
- linux ldconfig 与 /etc/ld.so.conf 动态函数库配置
我们知道,内存的访问速度是硬盘的好几倍,所以,如果将常用的动态函数库加载到内存中(高速缓存,cache),当软件套件要采用动态函数库时,就不需要重新从硬盘里读出,这样就可以提高动态函数库的读取速度.这 ...
- linux c 下面的动态函数库 libc.so.6
我们有时候会遇到这两种库: glibc, libc libc 是 Linux 下的 ANSI C 函数库:glibc 是 Linux 下的 GUN C 函数库. libc.so.6 属于 glibc ...
- mysql动态函数库_mysql自定义函数与动态查询
介绍下mysql自定义函数的例子,以及插入单引号的方法,动态执行查询与字符串拼接的相关内容. 1.mysql自定义函数的例子 mysql不能像oracle 一样写 动态SQL. 代码示例: DROP ...
- Linux静态库和动态库的设计
静态库和动态库的设计 宗旨:技术的学习是有限的,分享的精神是无限的. Linux应用程序设计中需要的外部函数主要由函数库和系统调用来提供 Linux应用程序使用的主要函数库均存放于/lib, /usr ...
- Linux 下的静态(函数)库、动态(函数)库
0. 基本 在命名上,静态库的名字一般是 libxxx.a,动态库的名字一般是 libxxx.so,有时 libxxx.so.major.minor,xxx 是该 lib 的名字,major 是主版本 ...
- Linux基础—” Linux静态动态库及相关编程“ 面试必问的知识点你了解了嘛
文章目录 Linux库引入之分文件编程 分文件编程案例 Linux库 1. 库是什么 2. 静态函数库 3. 动态库 Linux库概念及相关编程(面试重点) Linux库引入之分文件编程 分文件编程案 ...
- 静态函数库,共享函数库以及动态链接库
动态链接库的使用及注意事项 windows中动态链接库以.dll后缀为标记.动态链接库和净态链接库不同,它里面的函数并不是执行程序的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个执行程序 ...
- Linux C函数库参考手册
第1章 字符测试函数isalnum(测试字符是否为英文字母或数字)isalpha(测试字符是否为英文字母)isascii(测试字符是否为ascii码字符)isblank(测试字符是否为空格字符)isc ...
- 查看函数库.a函数符号信息
一.概述 nm命令可以列出一个函数库文件中的符号表.它对于静态的函数库和共享的函数库都起作用.对于一个给定的函数库,nm命令可以列出函数库中定义的所有符号,包括每个符号的值和类型.还可以给出在原程序中 ...
最新文章
- Android 模拟机自定义屏幕的尺寸
- [转载] 晓说——第3期:梦回青楼 爱与自由的温柔乡(上)
- void *指针的加减运算
- 硬中断与软中断的区别!!!
- 自己动手写RTP服务器——关于RTP协议
- crc16 modbus php代码,crc16 - 产生Modbus RTU格式的CRC码
- Jquery跨域获得Json
- Spring Cloud--Honghu Cloud分布式微服务云系统—组件化
- java数组按照大小排列_Java怎么让数组中元素按照牌值从小到大的顺序排列
- GUN/LINUX命令之 cp mv install
- linux定时任务小程序,linux定时任务
- subversion mysql_MySQL数据库之httpd+mysql+php+subversion
- 【贪心】牛客网:把数组排成最小的数
- (转)招行开启零售银行智能投顾时代 尝试打造金融垂直自场景
- EA6900刷梅林教程超详细
- 毕业工具大全:开题、答辩、格式排版等stata、spss等多种统计软件、绘图软件(附送教学视频)超200G资料
- 微信jssdk 图片上传 JAVA_微信JSSDK上传图片
- Soul里的“盲盒”交友
- 2020年7月的自我鉴定(非技术篇)
- 2023华为海思一面(数字后端)