快速业务通道

Linux链接库简介

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-16
的集合.在连接时,静态库的文件代码会被拷贝到可执行文件中,静态连接的可执行文件一般比较大一些.
在Linux(Unix)中使用工具“ar”对静态库进行维护管理,创建静态库用ar命令,在系统提示符下键入以下命令将创建静态库文件libmyhello.a.
# ar -rc libmyhello.a hello.o
静态库的缺点是,如果我们在同一时间运行多个程序而它们又都使用着来自同一个函数库里的函数时,内存里就会有许多份同一函数的备份,在程序文件本身也有许多份同样的备份.这会消耗大量宝贵的内存和硬盘空间.
(2)共享库
也称动态库,许多UNIX系统支持共享库,它同时克服了静态库在内存和硬盘方面的无谓消耗.链接时,动态库的代码不会被加入可执行文件中,而是在程序被执行的时候加载.
共享库的默认存放位置和静态库是一样的,但有着不同的文件后缀.在一个典型的 Linux系统上,C语言标准库的共享版本是/usr/lib/libc.so N,其中的N是主版本号.当静态库和动态库同名时,gcc命令将优先使用动态库.
可用gcc来创建动态库,在系统提示符下键入以下命令得到动态库文件libmyhello.so.
# gcc -shared -fPCI -o libmyhello.so hello.o
4. 对比
静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不会被连接到目标代码中,而是在程序运行时才被载入,因此在程序运行时还需要动态库存在.
Empire CMS,phome.net

假如程式是在编译时加载库文档的,就是使用了静态库.假如是在运行时加载目标代码,就成为动态库.换句话说,假如是使用静态库,则静态库代码在编译时就拷贝到了程式的代码段,程式的体积会膨胀.假如使用动态库,则程式中只保留库文档的名字和函数名,在运行时去查找库文档和函数体,程式的体积基本变化不大.
静态库的原则是“以空间换时间”,增加程式体积,减少运行时间;动态库则是“以时间换空间”,增加了运行时间,但减少了程式本身的体积.
5. 总结
标准静态库或共享库,路径和库名都不需显示指定;
非标准静态库,显示指定库名,不在默认路径中时需指定路径;
非标准共享库,编译时:指定库名,不在默认路径中需指定路径名,
运行时,不在默认路径中时需要将库位置添加到库搜索路径中或拷贝库到默认路径中.
6. gcc相关命令
使用要点:
⑴在gcc 的-I参数后加上库头文件的路径;
⑵在gcc 的-L参数后加上库文件所在目录;
⑶在gcc 的-l参数后加上库文件名,但是要去掉lib和.a扩展名,比如库文件名是libtest.a 那么参数就是-ltest.

Empire CMS,phome.net

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号