服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|

服务器之家 - 服务器系统 - Linux - 浅谈Linux C语言动态库及静态库

浅谈Linux C语言动态库及静态库

2021-12-21 18:40Linux教程网 Linux

下面小编就为大家带来一篇浅谈Linux C语言动态库及静态库。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

假设在math目录下已编辑好add.c sub.c div.c mul.c func_point.c文件,func_point.c为包含main()的源文件!

动态库的制作:

方法一:

?
1
2
3
4
5
6
7
gcc -c -fPIC add.c sub.c div.c mul.c //-c表示生成.o目标文件,-f后加一些编译选项,PIC表示与位置无关
 
gcc -shared -o libmymath.so add.o sub.o mul.o div.o//创建共享库mymath,添加add.o,sub.o,mul.o,div.o目标文件
 
sudo mv libmymath.so /usr/lib
 
gcc func_point.c -lmymath//-l后面加动态链接库名字

方法二:

?
1
2
3
4
5
6
7
gcc -c -fPIC add.c sub.c div.c mul.c //-c:生成.o目标文件,-f后加一些编译选项,PIC表示与位置无关
 
gcc -shared -o libmymath.so add.o sub.o mul.o div.o//创建共享库mymath,添加add.o,sub.o mul.o div.o目标文件
 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.//注意此操作后把当前目录加入环境变量中
 
gcc func_point.c -L. -lmymath//-l后面加动态链接库名字

方法三:

?
1
2
3
4
5
6
7
8
9
gcc -c -fPIC add.c sub.c div.c mul.c //-c:生成.o目标文件,-f后加一些编译选项,PIC表示与位置无关
 
gcc -shared -o libmymath.so add.o sub.o mul.o div.o//创建共享库mymath,添加add.o,sub.o mul.o div.o目标文件
 
sudo vi /etc/ld.so.conf//把你的动态库路径加入此文件中
 
sudo ldconfig
 
gcc func_point.c -L. -lmymath//-l后面加动态链接库名字

ldd   显示可执行程序所需的共享库。

定义好框架,不断增加动态库!!

静态库制作:

ar -crs libmymath.a add.o sub.o div.o mul.o/*创建静态库mymath,添加add.o,sub.o,mul.o,div.o,-c:创建归档文件 -r:插入 -s:若归档文件中包含了对象模式,可利用此参数建立备存文件的符号表  ar -crs libmymath.a *.o */
gcc func_point.c -L. -lmymath//-L在哪个目录下找库 -l找哪个库,-lm可以链接到标准算数库,-lpthread可以连接到Linux标准线程库
ar -d libmymath.a add.o//删除一个
ar -r libmymath.a add.o//增加一个

静态库在程序链接时用到,链接器把程序所需的代码从静态库中拷贝到可执行程序中,可执行程序会增大;动态库在程序加载时用到,程序在加载时,会先检查需要哪些动态库连接,然后从内存中找到这些动态库的地址,最后加载动态库运行程序。

以上这篇浅谈Linux C语言动态库及静态库就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

延伸 · 阅读

精彩推荐
  • Linuxlinux系统怎么用SecureCRT上传和下载文件?

    linux系统怎么用SecureCRT上传和下载文件?

    linux系统怎么用SecureCRT上传和下载文件?我们在使用linux的过程中,不论是为了安装相关软件,还是其它目的,都可能需要上传或者下载linux上的文件,下面...

    脚本之家4772019-10-12
  • Linuxlinux下快速列出局域网中所有主机名(计算机名)的脚本

    linux下快速列出局域网中所有主机名(计算机名)的脚本

    这篇文章主要介绍了linux下快速列出局域网中所有主机名(计算机名)的脚本,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,...

    RDX3582020-07-30
  • LinuxLinux mpstat命令的方法(实时系统监控工具)

    Linux mpstat命令的方法(实时系统监控工具)

    mpstat是Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有...

    互联网8172019-05-23
  • LinuxLinux配置SSH服务以便实现远程连接

    Linux配置SSH服务以便实现远程连接

    怎么开启SSH服务吧,SSH服务是Linux系统远程连接的重要方式,如何配置SHH服务也让很多用户感到纠结,下文为大家详细介绍下,感兴趣的朋友不要错过...

    服务器之家6702019-10-11
  • Linux基于嵌入式linux 3G下的无压缩视频传输

    基于嵌入式linux 3G下的无压缩视频传输

    本课题研究嵌入式系统在数据采集,3G无线通信方面的应用,由于知识水平的缺乏和实验条件的限制,本人并没有采取视频压缩算法 ...

    Linux教程网5582019-12-15
  • Linux浅谈linux中的whoami与 who指令

    浅谈linux中的whoami与 who指令

    下面小编就为大家带来一篇浅谈linux中的whoami与 who指令。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Linux教程网11522021-12-08
  • Linuxlinux awk 内置变量使用介绍

    linux awk 内置变量使用介绍

    awk是个优秀文本处理工具,可以说是一门程序设计语言。下面是awk内置变量,需要的朋友可以参考下 ...

    Linux教程网4292019-11-25
  • Linuxiptables的基本配置规则小结

    iptables的基本配置规则小结

    这篇文章主要介绍了iptables的基本配置规则小结,iptables是常用的Linux自带的IP过滤规则系统,需要的朋友可以参考下...

    大步's blog5642019-09-06