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

静态、动态函数库的设计相关推荐

  1. 静态库,动态库是啥,有啥区别(静态函数库/动态函数库)

    因之前初学接触这个概念的时候无法直观的理解,询问多人也得到类似如下回复:静态库就是静态库,动态库就是动态库.一个编译一个不编译等类似的回复.伪善的人太多,披着"有问题可以问我"的外 ...

  2. linux ldconfig 与 /etc/ld.so.conf 动态函数库配置

    我们知道,内存的访问速度是硬盘的好几倍,所以,如果将常用的动态函数库加载到内存中(高速缓存,cache),当软件套件要采用动态函数库时,就不需要重新从硬盘里读出,这样就可以提高动态函数库的读取速度.这 ...

  3. linux c 下面的动态函数库 libc.so.6

    我们有时候会遇到这两种库: glibc, libc libc 是 Linux 下的 ANSI C 函数库:glibc 是 Linux 下的 GUN C 函数库. libc.so.6 属于 glibc ...

  4. mysql动态函数库_mysql自定义函数与动态查询

    介绍下mysql自定义函数的例子,以及插入单引号的方法,动态执行查询与字符串拼接的相关内容. 1.mysql自定义函数的例子 mysql不能像oracle 一样写 动态SQL. 代码示例: DROP ...

  5. Linux静态库和动态库的设计

    静态库和动态库的设计 宗旨:技术的学习是有限的,分享的精神是无限的. Linux应用程序设计中需要的外部函数主要由函数库和系统调用来提供 Linux应用程序使用的主要函数库均存放于/lib, /usr ...

  6. Linux 下的静态(函数)库、动态(函数)库

    0. 基本 在命名上,静态库的名字一般是 libxxx.a,动态库的名字一般是 libxxx.so,有时 libxxx.so.major.minor,xxx 是该 lib 的名字,major 是主版本 ...

  7. Linux基础—” Linux静态动态库及相关编程“ 面试必问的知识点你了解了嘛

    文章目录 Linux库引入之分文件编程 分文件编程案例 Linux库 1. 库是什么 2. 静态函数库 3. 动态库 Linux库概念及相关编程(面试重点) Linux库引入之分文件编程 分文件编程案 ...

  8. 静态函数库,共享函数库以及动态链接库

    动态链接库的使用及注意事项 windows中动态链接库以.dll后缀为标记.动态链接库和净态链接库不同,它里面的函数并不是执行程序的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个执行程序 ...

  9. Linux C函数库参考手册

    第1章 字符测试函数isalnum(测试字符是否为英文字母或数字)isalpha(测试字符是否为英文字母)isascii(测试字符是否为ascii码字符)isblank(测试字符是否为空格字符)isc ...

  10. 查看函数库.a函数符号信息

    一.概述 nm命令可以列出一个函数库文件中的符号表.它对于静态的函数库和共享的函数库都起作用.对于一个给定的函数库,nm命令可以列出函数库中定义的所有符号,包括每个符号的值和类型.还可以给出在原程序中 ...

最新文章

  1. Android 模拟机自定义屏幕的尺寸
  2. [转载] 晓说——第3期:梦回青楼 爱与自由的温柔乡(上)
  3. void *指针的加减运算
  4. 硬中断与软中断的区别!!!
  5. 自己动手写RTP服务器——关于RTP协议
  6. crc16 modbus php代码,crc16 - 产生Modbus RTU格式的CRC码
  7. Jquery跨域获得Json
  8. Spring Cloud--Honghu Cloud分布式微服务云系统—组件化
  9. java数组按照大小排列_Java怎么让数组中元素按照牌值从小到大的顺序排列
  10. GUN/LINUX命令之 cp mv install
  11. linux定时任务小程序,linux定时任务
  12. subversion mysql_MySQL数据库之httpd+mysql+php+subversion
  13. 【贪心】牛客网:把数组排成最小的数
  14. (转)招行开启零售银行智能投顾时代 尝试打造金融垂直自场景
  15. EA6900刷梅林教程超详细
  16. 毕业工具大全:开题、答辩、格式排版等stata、spss等多种统计软件、绘图软件(附送教学视频)超200G资料
  17. 微信jssdk 图片上传 JAVA_微信JSSDK上传图片
  18. Soul里的“盲盒”交友
  19. 2020年7月的自我鉴定(非技术篇)
  20. 2023华为海思一面(数字后端)

热门文章

  1. jQuery javaScript js 判断浏览器的类型、版本的方法
  2. 【转】后端取得当前PAGE的方法
  3. 数据分析最难的就是怎样读懂数据!
  4. 从一件数据清洗的小事说起
  5. jupyterLab+R,让你更优雅的探索数据
  6. R|数据处理|list的转化与转置
  7. PythonAM3_统计量分析
  8. linux下C获取系统时间的方法
  9. 用Kotlin开发Android的Hello Kotlin!!
  10. 20145321 《信息安全系统设计基础》第5周学习总结