c语言学习笔记十五
来源:互联网 发布:主流的社交软件 编辑:程序博客网 时间:2024/06/04 18:01
静态库
在一定场景下将一些代码编译成一个库文件,以供其他程序使用
示例代码如下:
20-23文件放在子目录stack中
test20.c文件:
char stack[512];
int top=-1;
test21.c文件:
extern char stack[512];
extern int top;
void push(char c){
stack[++top]=c;
}
test22.c文件:
extern char stack[512];
extern int top;
char pop(void){
return stack[top--];
}
test23.c文件:
extern char stack[512];
extern int top;
int is_empty(void){
return top==-1;
}
test18.h头文件
#ifndef STACK_H
#define STACK_H
extern void push(char);
extern char pop(void);
extern int is_empty(void);
#endif
test24.c文件
#include <stdio.h>
#include "test18.h"
int main(void){
push('a');
return 0;
}
1 将test20,test21,test22,test23编译成目标文件:
gcc -c stack/test20.c stack/test21.c stack/test22.c stack/test23.c
2 然后打包成一个静态库:
//ar 打包
//参数r 表示将后面文件添加到文件包中
//参数s 表示生成静态库
ar rs libstack.a test20.o test21.o test22.o test23.o
3 将编译生成的libstack.a和test24.c编译链接在一起:
/*
* -L. 在当前目录查找库文件
* -lstack 链接libstack库
* -Istack 头文件所在目录
*/
gcc test24.c -L. -lstack -Istack -o test24
也可以将目标文件一起编译:
gcc test24.c
查看编译器默认会test20.o test21.o test22.o test23.o -Istack -0 test24
查找的目录:
gcc -print-search-dirs
注: 链接共享库和静态库的区别,
共享库只在运行时作动态链接;
链接静态库时,链接器会把静态库的目标文件取出来和可执行文件链接在一起
可以使用反江编查看:objdump -d test24
示例代码如下:
080483b4 <main>:
80483b4: 55 push %ebp
80483b5: 89 e5 mov %esp,%ebp
080483d0 <push>:
80483d0: 55 push %ebp
80483d1: 89 e5 mov %esp,%ebp
80483d3: 83 ec 04 sub $0x4,%esp
在一定场景下将一些代码编译成一个库文件,以供其他程序使用
示例代码如下:
20-23文件放在子目录stack中
test20.c文件:
char stack[512];
int top=-1;
test21.c文件:
extern char stack[512];
extern int top;
void push(char c){
stack[++top]=c;
}
test22.c文件:
extern char stack[512];
extern int top;
char pop(void){
return stack[top--];
}
test23.c文件:
extern char stack[512];
extern int top;
int is_empty(void){
return top==-1;
}
test18.h头文件
#ifndef STACK_H
#define STACK_H
extern void push(char);
extern char pop(void);
extern int is_empty(void);
#endif
test24.c文件
#include <stdio.h>
#include "test18.h"
int main(void){
push('a');
return 0;
}
1 将test20,test21,test22,test23编译成目标文件:
gcc -c stack/test20.c stack/test21.c stack/test22.c stack/test23.c
2 然后打包成一个静态库:
//ar 打包
//参数r 表示将后面文件添加到文件包中
//参数s 表示生成静态库
ar rs libstack.a test20.o test21.o test22.o test23.o
3 将编译生成的libstack.a和test24.c编译链接在一起:
/*
* -L. 在当前目录查找库文件
* -lstack 链接libstack库
* -Istack 头文件所在目录
*/
gcc test24.c -L. -lstack -Istack -o test24
也可以将目标文件一起编译:
gcc test24.c
查看编译器默认会test20.o test21.o test22.o test23.o -Istack -0 test24
查找的目录:
gcc -print-search-dirs
注: 链接共享库和静态库的区别,
共享库只在运行时作动态链接;
链接静态库时,链接器会把静态库的目标文件取出来和可执行文件链接在一起
可以使用反江编查看:objdump -d test24
示例代码如下:
080483b4 <main>:
80483b4: 55 push %ebp
80483b5: 89 e5 mov %esp,%ebp
080483d0 <push>:
80483d0: 55 push %ebp
80483d1: 89 e5 mov %esp,%ebp
80483d3: 83 ec 04 sub $0x4,%esp
- c语言学习笔记十五
- c语言学习笔记二十五
- C语言程序学习(十五)笔记
- 【黑马程序员】C语言学习笔记之typedef(十五)
- C语言学习笔记(十五) -网络 TCP协议
- [C语言学习]作业十五
- Object-c学习笔记十五-----AppKit简介
- c语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C语言学习笔记
- C 语言学习笔记
- C语言学习笔记
- 2012成都赛区网络赛第二题---Control(hdu4289)
- 可变参数宏__VA_ARGS__
- 常用的快捷键
- linux设备驱动中的并发控制
- 利用uploadprogress实现上传进度条
- c语言学习笔记十五
- 动态规划解最长公共子序列问题
- tomcat通过配置文件发布缺省工程
- Emacs插件 - CEDET
- C#推箱子-地图编辑器
- 从Hadoop框架与MapReduce模式中谈海量数据处理(淘宝技术架构)
- Windows Store apps开发[32]C++/CX Part 2 of [n]: hat(^)类型
- 在url中传递中文参数
- static 修饰成员变量与成员函数