注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

W_中原的博客笔记

通知:新博客日志将更新到个人站点:http://www.zhgyuan.cn/

 
 
 

日志

 
 

linux静态库  

2014-02-07 17:00:16|  分类: Linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
创建一个小型函数库,包括两个函数,再建一个实例函数调用这两个函数。

新建连个C文件pa.c pb.c
#sudo gedit pa.c

#include <stdio.h>
void pa(char *arg)
{
  printf("pa passed %s\n",arg);
}

#sudo gedit pb.c

#include <stdio.h>
void pa(char *arg)
{
  printf("pb passed %s\n",arg);
}

分别编译以上文件产生包含在库文件中的目标文件
#gcc -c pa.c pb.c
当前目录下就产生了pa.o pb.o两个文件

新建一个库文件bill.h,包含进上门两个c文件
#sudo gedit bill.h
void pa(char *);
void pb(char *);

新建一个实例函数program.c
#sudo gedit program.c

#include <stdlib.h>
#include "bill.h" //包含进库bill.h,bill.h中包括了pa.c pb.c
int main()
{
  pa("Hello World\n");
  pb("Hello World\n");
  exit(0);
}

编译程序
#gcc -c program.c 
与之前编译好的目标模块pa.o pb.o链接
# gcc -o program program.o pa.o pb.o 
这样就生成了program可执行文件
执行
#./program
这时将打印出一下内容:
pa passed Hello World
pb passed Hello World

使用ar创建一个库文件
#ar crv libfoo.a pa.o pb.o
a - pa.o
a - pb.o
为函数生成一个内容表
#ranlib libfoo.a
添加新建的库文件编译
#gcc -o program program.o libfoo.a
执行
#./program
结果与上面一样:
pa passed Hello World
pb passed Hello World

linux静态库 - W_中原 - 汪中原的博客笔记
 

静态库的缺点:当有多个文件调用库文件时内存中就会有多个副本,这样就会浪费内存和磁盘空间


  评论这张
 
阅读(20)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017