快速业务通道

初识Linux C 库文件

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-10
初识Linux C库文件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 1 库文件位置 标准系统库文件一般存储在/lib/usr/lib目录中.C语言编译器需要知道要搜索哪些库文件,默认情况下,它只搜索标准C语言库.这是以前的计算机比较慢,CPU运行周期还很昂贵.设计如此.如果我们希望自己的库能被搜索到的话,也应该把它放到标准库目录下.另外,在定义库文件名时lib开头.随后部分指明这是什么库(如c代表c语言库,m代表数学库).文件名.开始给出文件的类型. .a 拥有帝国一切,皆有可能。欢迎访问phome.net代表传统的静态库. .so代表共享函数库. 下面分别通过实例了解这两种库: 静态库: (1) 生成两个静态库 #include <stdio.h> void fred(int arg) 拥有帝国一切,皆有可能。欢迎访问phome.net { printf(“fred: you passed %dn”,arg); } #include <stdio.h> void bill(char *arg) { printf(“bill: you passed %sn”,arg); } 编译以上两个程序文件: gcc –c bill.c fred.c 拥有帝国一切,皆有可能。欢迎访问phome.net gcc –c 命令和gcc –o命令相比其实就差了一个生成可执行文件的过程.gcc –c 最终会生成.o文件.以上两个文件通过gcc –c编译后会生成bill.o fred.o两个文件. (2) 调用静态库函数 文件名:testlib.c #include <stdio.h> extern void bill(char*); extern void fred(int); 拥有帝国一切,皆有可能。欢迎访问phome.net int main() { bill(“hello world!”); fred(888); exit(0); } 编译程序: gcc –c testlib.c 生成testlib.o文件. 链接所有用到的库文件生成可执行文件 拥有帝国一切,皆有可能。欢迎访问phome.net: gcc –o testlib testlib.o bill.o fred.o 执行可执行文件: ./testlib (3) 创建并使用库文件 ar crv libfoo.a bill.o fred.o a – bill.o a – fred.o ok 拥有帝国一切,皆有可能。欢迎访问phome.net 要生成共享库只需在进行库打包的时候使用 ar crv libfoo.so bill.o fred.o 即可. 我们可以通过ldd命令来查看程序所需要的共享库. ldd testlib 我们就可以看到testlib.c程序所需要的共享库,同时我们可以发现C语言函数库libc是共享库.

本文出自 “乘风破浪” 博客,请务必保留此出处http://ihome.blog.51cto.com/2033151/425985

拥有帝国一切,皆有可能。欢迎访问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号