首页 > 其他 > 详细

静态库的基本使用

时间:2014-02-06 13:29:27      阅读:377      评论:0      收藏:0      [点我收藏+]
一、 静态库的编译
1. 编译过程 (*.a) a是achieve的缩写
1.1 编译成目标文件
-static 可选
gcc -c -static 代码文件.c
1.2 归档成静态库
ar工具 (常用-r -t选项)
ar -r 静态文件名被归档的文件名
ar -r add.aadd.o
nm工具(查看函数符号表)
nm 静态库或动态库或目标文件或执行文件
1.3 使用静态库
gcc 代码文件 静态库
小例子:
使用静态库完成如下程序
输入一个菱形半径,打印菱形
输入整型封装成IOTool
菱形打印封装成Graphic
计划:
1. 实现输入
2. 实现菱形
3. 编译静态库
4. 调用静态库

1)input.c
#include <stdio.h>


int inputInt(const char* info){
   printf("please input the radiu of diamond\n");
   int r;
   scanf("%d",&r);
   return r;

}

2)diamond.c
#include <stdio.h>


int diamond(int r){

   int x,y;
   for(y = 0 ; y <= 2*r ; ++y){
      for(x = 0 ; x <= 2*r ; ++x){
         if(y == x+r || y == x-r || y == -x+r || y == -x+3*r){
             printf("*");
         }else{
             printf(" ");
         }
      }
      printf("\n");
   }
}

3)main.c
#include <stdio.h>


int main(){
   int r = inputInt("asda");
   diamond(r);

}

效果图:
bubuko.com,布布扣


编译执行方式:
第一种:gcc main.c input.c diamond.c -omain
第二种:作为静态库进行编译执行
gcc -static -c input.c    //产生input.o文件
gcc -static -c diamond.c
ar -r ku.a input.o diamond.o   //利用input.o 和diamond.o文件产生ku.a 文件
gcc main.c ku.a -omain   
./main     //执行main程序

把静态库作为代码的一部分来编译
 
总结:
1. 什么是库?
函数等代码封装的二进制已经编译的归档文件
2. ar归档工具
3. 采用库的方式管理代码优点:
容易组织代码
复用
保护代码版权
4. 静态库的“静态”的含义:
编译好的程序运行的时候不依赖库
库作为程序的一部分编译连接
5. 静态库的本质
就是目标文件的集合(归档)
6. -static可选
 
2. 库的规范与约定
库命名规则:
lib库名.a.主版本号.副版本号.批号
一般就写“lib库名.a”就行了。
ar -r libdemo2.a iotool.o graphic.o
库的使用规则
-l库名
-L库所在的目录
gcc main.c -o main -l demo2 -L.


------------------------------------静态库的基本使用小结---------------------------------
1、静态库的生成与使用
生成:gcc -static -c input.c
           gcc -static -c diamond.c
           ar -r ku.a input.o diamond.o
使用:gcc main.c ku.a -o main
执行:./main

2、其他的常见命令
ar -r ku.a ku1.o ku2.o  //利用ku1.o  ku2.o 生成归档文件ku.a
ar -t ku.a  //查看归档文件ku.a 的内容
ar -p ku.a  //产看归档文件ku.a 的具体内容

同时还应注意以下写法:
gcc main.c input.c diamond.c -omain //将main.c input.c diamond.c 一起编译生成main程序
          






静态库的基本使用

原文:http://blog.csdn.net/hjd_love_zzt/article/details/18947293

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!