初识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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于初识Linux C 库文件的所有评论