2-6 静态函数库和动态函数库的建立

本文详细介绍了Linux环境下静态链接库和动态链接库的区别及其制作方法。包括它们在程序编译和运行过程中的作用,如何选择使用静态或动态库,以及具体的编译命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(本姐的实验代码在这里,不过好像没什么卵用)

1.  函数库

        Linux应用程序设计中,用到的外部函数主要由函数库和系统调用提供,函数库按照链接方式的不同,可分为静态链接库和动态链接库两种。


2.  区别

        静态链接库:在程序编译时,把库一起链接进程序,最后生成的可执行文件体积变大,但以后就不需要外部提供这个库,切运行速度更快。

        动态函数库:在编译时不链接,在程序运行时才把动态库加载到内存中进行调用,生成可执行文件小,但运行速度较静态库慢。


3.  存放库的位置

        一般位于这么几个地方:/lib        /usr/lib        “.so”为动态库,而“.a”则为静态库


4.编译选项

        Linux在进行链接时,默认链接动态库,若需要使用静态库,需要加入编译选项[-static],如:gcc -static test.c -o test。

        (用“readelf -d” 可查看可执行程序需要用到的动态库 ,当然,这个命令只能查看动态库而无法查看静态库)

        RHEL6中默认不提供lib.a(也就是静态C库),若在编译程序的时候需要用到则要另外进行安装glibs-static-2.12-1.80.el6.i686,运行

rpm -ivh glibc-static-2,12-1.80.el6.i686即可。(这个压缩包需要另外下载,在RHEL6光盘中是不提供的)


5.  静态函数库的制作方法及用法,参照如下几行代码:

gcc -c mylib.c -o mylib.o

ar cqs libmylib.a mylib.o

cp libmylib.a /usr/lib/

gcc -static test.c -lmylib -o test


6.  动态函数库的制作方法如下:

gcc -c mylib.c -o mylib.o

gcc -shared -fPIC mylib.o -o libmylib.so  /*  [-fPIC]         按照可重定位地址方式生成输出对象  */

                                                                         /*  [-sharde]    指明产生动态链接库  */ 

cp libmylib.so /usr/lib                                         







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值