菜鸟潇寒学习库----静态库
来源:互联网 发布:淘宝卖家密码修改 编辑:程序博客网 时间:2024/04/20 20:12
静态库: 在编译连接时把库里的代码提取出来放入到可执行文件中,程序执行的时候不在依赖库。
动态库: 在编译连接时候只记录要用的名字在哪个库文件中,运行的时候才从库文件中找这个名字(函数或者变量)并访问它。
CPATH,C_INCLUDE_PATH 这连个环境变量都可以指定gcc编译的时候收索头文件的目录。类似-I选项。
1)静态库(归档)libxxx.a
(1)产生库
写C语言程序(一般不应该有mian函数)
gcc -c xxx1.c
gcc -c xxx2.c
写一个头文件xxx.h,里面放这些函数和全局变量的声明(extern int a)。
再ar -r libxxx.a xxx1.o xxx2.o
(2)使用库
写C语言程序,包含头文件xxx.h,程序中可以调用库中的函数或者访问库中的全局变量。
方式一:gcc -c usexxx.c ;gcc usexxx.o libxxx.a
方式二:gcc -c usexxx.c ;gcc usexxx.o -lxxx -L.其中-lxxx表示要连接
libxxx.a库文件(xxx称为库名),-L表示在当前目录下(.)找库文件libxxx.a。
方式三:先设置环境变量LIBRARY_PATH的值为库文件所在的目录。然后
gcc -c usexxx.c ;gcc usexxx.o -lxxx==>>两句都可以直接等价于gcc usexxx.c
-lxxx
******具体演示
***产生库
A.编写一个小程序===>>代码1==>>保存为hello1.c
#include<stdio.h>void hello(){printf("hello!\n");}
B.在编写一段代码==>>保存为hello2.c
#include<stdio.h>void nice(){printf("nice to meet you!\n");}
C.再写完之后就分别执行
gcc -c hello1.c;
gcc -c hello2.c
在这之后你会发现你的文件夹中会多出两个文件
分别是:hello1.o hello2.o
D.在编写头文件 hello.h
#ifndef PWX_HELLO#define PWX_HELLOvoid hello();void nice(); //函数在头文件里面声明#endif
E.在执行语句
ar -r libhello.a hello1.o hello2.0
在这之后会发现你的文件夹又多出一个libhello.a的文件,这样你的静态库文件就产生了。
***使用库
F.(选择方式一进行演示)
写一个C程序包涵自己定义的头文件,保存为usehello.c
#include<stdio.h>#include"hello.h"int main(){hello();nice();}
G.最后执行gcc -c usehello.c ;gcc usehello.o libhello.a
或者直接执行gcc usehello.c libhello.a
这样也可以生成最后的可执行文件 a.out.
****PS:这只是简单的演示其中一种方式,能力有限****
- 菜鸟潇寒学习库----静态库
- 菜鸟潇寒学习库----动态库
- 静态库链接学习
- 静态库链接学习
- 静态库链接学习
- 【菜鸟要学习】 关于动态绑定和静态绑定
- iPhone静态库学习笔记
- iPhone静态库学习笔记
- iPhone静态库学习笔记
- 静态库的创建学习
- iPhone静态库学习笔记
- c语言静态库.h文件的注意事项(一个编程菜鸟记录自己的编程路程)
- 菜鸟潇寒学习C++笔记------第二部分
- C++运算符重载简单学习-----菜鸟潇寒
- 菜鸟潇寒学习C++笔记------第三部分
- 菜鸟学习Struts——bean标签库
- 菜鸟学习Git技术系列--No.3 创建版本库
- Python菜鸟学习手册13----标准库简介
- django session xxx is not JSONSerializer
- Mathematics for 3D Game Programming and Computer Graphics - Rotation Transforms About Arbitrary Axis
- [IOS]页面跳转 相关
- rtsp时间戳计算方法
- iChinese Menu
- 菜鸟潇寒学习库----静态库
- 《unix环境高级编程》书中源代码编译问题解决
- struts2 对ajax的支持
- 配置mysql 5.6免安装版
- 关于computeScroll()方法与Scroller,startScroll
- win8.1 Android SDK Manager 闪退的真正解决办法
- makefile超级详细规则
- 【Qt】Qt Creator中出现LNK2019
- Java中取小数点后两位(四种方法)