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

 更新时间:2017年01月11日 09:53:42   投稿:jingxian  
下面小编就为大家带来一篇浅谈Linux C语言动态库及静态库。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

动态库的制作:

方法一:

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后面加动态链接库名字

方法二:

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后面加动态链接库名字

方法三:

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语言动态库及静态库就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • centos7修改系统语言为简体中文的实现

    centos7修改系统语言为简体中文的实现

    这篇文章主要介绍了centos7修改系统语言为简体中文的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Linux 块设备驱动代码编写

    Linux 块设备驱动代码编写

    这篇文章主要介绍了Linux 块设备驱动代码编写,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Linux alias命令编写

    Linux alias命令编写

    这篇文章主要介绍了Linux alias命令编写,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Linux使用cd命令之实现切换目录的完全指南

    Linux使用cd命令之实现切换目录的完全指南

    这篇文章主要介绍了Linux使用cd命令之实现切换目录的完全指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • 单台服务器中利用Apache的VirtualHost如何搭建多个Web站点详解

    单台服务器中利用Apache的VirtualHost如何搭建多个Web站点详解

    这篇文章主要给大家介绍了关于在单台服务器中利用Apache的VirtualHost如何搭建多个Web站点的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • linux下多线程中的fork介绍

    linux下多线程中的fork介绍

    大家好,本篇文章主要讲的是linux下多线程中的fork介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下哦,方便下次浏览
    2021-12-12
  • Linux修改网卡名称、主机名的方法

    Linux修改网卡名称、主机名的方法

    本篇文章主要介绍了Linux修改网卡名称、主机名的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Ubuntu安装PHP和PHP Nginx配置方法

    Ubuntu安装PHP和PHP Nginx配置方法

    本篇文章主要介绍了Ubuntu安装PHP和PHP Nginx配置方法,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08
  • apache启用gzip压缩的实现方法

    apache启用gzip压缩的实现方法

    对于部署在Linux服务器上的PHP程序,在服务器支持的情况下,我们建议你开启使用Gzip Web压缩,以前脚本之家介绍了iis中的开启方法,这篇文章主要介绍了linux中apache的开启方法
    2013-06-06
  • linux 查找过滤及用户和组管理命令的一些实例

    linux 查找过滤及用户和组管理命令的一些实例

    这篇文章主要介绍了linux 查找过滤及用户和组管理命令的一些实例,需要的朋友可以参考下
    2016-10-10

最新评论