linux应用开发-设计静态库
来源:互联网 发布:淘宝直播抢红包软件 编辑:程序博客网 时间:2024/06/07 20:23
linux应用开发-设计静态库
一 应用程序
函数库(用户)和系统调用(linux内核)
二 库分类
1 静态链接库(*.a)
一个程序使用一个函数库
2 动态链接库(*.so)
多个程序可以使用同一个函数库,减少程序的大小
3 静态库比动态库大
三 制作自己的静态库
1 gcc -c mylib.c -o mylib.o
2 ar cqs libmylib.a mylib.o
3 将做好的libmylib.a 复制到/usr/lib目录下
四 使用自己创建的静态库
1 linux默认链接动态库,若要链接静态库则:gcc -static hello.c -o helloc.out
2 使用自己的动态库:
创建main.c来调用自己的库
创建main.h里面包含了要调用的函数库里面的函数的原型声明
编译调用gcc -static -lmylib main.c -o main.out -l参数为调用自己的lib
GCC在链接时,默认只会链接C函数库,而对于其他的函数库,则需要使用-l选项来显示地指明需要链接。
linux目录/usr/lib和/lib下存放了相应的lib,常用libmylib.a来命名,前面的lib必须加上
五 简单加法计算器案列
1 编写add.c
2 编译成静态库:gcc -c add.c -o add.o ar cqs libadd.a add.o
3 复制到/usr/lib: cp libadd.a /usr/lib/
4 创建main.c来作为主函数调用add函数 创建main.h来包含add函数的声明
5 编译调试:gcc -static -ladd main.c -o main.out
6 运行./main.out
函数库(用户)和系统调用(linux内核)
二 库分类
1 静态链接库(*.a)
一个程序使用一个函数库
2 动态链接库(*.so)
多个程序可以使用同一个函数库,减少程序的大小
3 静态库比动态库大
三 制作自己的静态库
1 gcc -c mylib.c -o mylib.o
2 ar cqs libmylib.a mylib.o
3 将做好的libmylib.a 复制到/usr/lib目录下
四 使用自己创建的静态库
1 linux默认链接动态库,若要链接静态库则:gcc -static hello.c -o helloc.out
2 使用自己的动态库:
创建main.c来调用自己的库
创建main.h里面包含了要调用的函数库里面的函数的原型声明
编译调用gcc -static -lmylib main.c -o main.out -l参数为调用自己的lib
GCC在链接时,默认只会链接C函数库,而对于其他的函数库,则需要使用-l选项来显示地指明需要链接。
linux目录/usr/lib和/lib下存放了相应的lib,常用libmylib.a来命名,前面的lib必须加上
五 简单加法计算器案列
1 编写add.c
2 编译成静态库:gcc -c add.c -o add.o ar cqs libadd.a add.o
3 复制到/usr/lib: cp libadd.a /usr/lib/
4 创建main.c来作为主函数调用add函数 创建main.h来包含add函数的声明
5 编译调试:gcc -static -ladd main.c -o main.out
6 运行./main.out
0 0
- linux应用开发-设计静态库
- linux应用开发-设计动态库
- Vs2012在Linux开发中的应用(12): 编译静态库
- linux应用开发基础(一)GCC编译器、动态库、静态库使用
- linux嵌入式应用开发- ubuntu eclipse/C 静态库中使用回调函数
- linux嵌入式应用开发- ubuntu eclipse/QT 调用C静态库
- Linux应用开发--静态函数库和动态函数库
- android应用开发-从设计到实现 3-3 Sketch静态原型设计
- android应用开发-从设计到实现 3-4 静态原型的状态栏
- android应用开发-从设计到实现 3-7 静态原型的更多天气信息
- android应用开发-从设计到实现 3-8 静态原型的Appbar折叠
- 【Linux开发】静态库和共享库开发
- Linux应用编程之静态库和动态库
- Linux应用编程- 程序地址布局 动态库 静态库
- Linux Makefile 静态库动态库应用实例
- linux中静态库的生成和应用
- Linux静态库和动态库的设计
- Nutz 设计模式应用 --- 静态工厂方法
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- 策略为王编译错误2:error C1189: #error : MFC does not support
- iOS开发多线程篇—线程的状态
- tomcat+jsp+javaBean搭配
- 安卓面试题系列-7
- linux应用开发-设计静态库
- linux自动以root登录,并自动启动用户程序的设置方法(适合sysVinit启动机制)
- automake安装入门
- 前端--笔试(个人实习)第二篇
- pandas 数据分析入门
- SAE微信公众号PHP SDK, token一直验证失败的解决方法
- 安卓面试题系列-8
- AndroidのIntent传递集合对象
- 【逻辑推理】 跑道赛跑决名次 & 二分图