Linux_3.1_静态函数库设计
来源:互联网 发布:邮箱服务器软件 编辑:程序博客网 时间:2024/06/05 18:09
函数库与系统调用区别:
系统调用是由linux内核实现的;
函数库是用户态的,是由工程师开发.
(2)函数库分为静态函数库,动态函数库两种
1>静态函数库-特点
2> 使用系统静态库-编译选项
①使用readelf -d test 命令查看程序默认使用的库函数,为动态链接库
②使用静态库编译时,出现如下情况.
提示没有lc库(即libc.a)
③安装静态库
④安装完成后再次执行②即可
(3)自定义静态链接库
使用其他静态链接库(自定义)编译程序
说明:
静态链接库的命名规范:
>必须以lib开头
>以.a结尾
>中间位置自定义
>例如: libmylib.a
使用规范:
> -l + name
>例如: -lmylib(即除去开头lib和.a结尾,剩下的部分)
(4) 静态库编译实例
①静态库函数tax.c
/**********************************************
*文件名: tax.c
*创建时间:2015.6.17
*创建者:mayi
*程序说明: 个人税率计算函数
**********************************************/
#include <stdio.h>
int tax(int salary,int insurance)
{
int tax_salary = salary-insurance;
int tmp = tax_salary -3500;
if(tmp <0)
{
printf("You don't need to tax!\n");
return 0;
}
if(tmp <= 1500)
{
return tmp*0.03-0;
}
if((tmp>1500) && (tmp <= 4500))
{
return tmp*0.1 - 105;
}
if((tmp>4500) && (tmp <= 9000))
{
return tmp*0.2 - 555;
}
if((tmp>9000) && (tmp <= 35000))
{
return tmp*0.25 - 1005;
}
if((tmp>35000) && (tmp <= 55000))
{
return tmp*0.30 - 2755;
}
if((tmp>55000) && (tmp <= 80000))
{
return tmp*0.35 - 5555;
}
if(tmp>80000)
{
return tmp*0.45 - 13505;
}
}
② 编写调用静态库函数的程序mytax.c
头文件tax.h
③ 将tax.c编译成二进制文件
gcc -c tax.c -o tax.o
④ 依赖tax.o生成静态库函数libtax.a
ar cqs libtax.a tax.o
⑤ 将生成的静态库函数复制到/usr/lib下
cp libtax.a /usr/lib
⑥ 使用静态函数库将mytax.c编译成应用程序tax
gcc -static mytax.c -ltax -o tax
说明:静态链接库函数命名规范和使用规范请看(3)的说明
⑦查看应用程序使用何种类型的链接库
提示没有动态库,说明使用的静态库
./tax运行
完成!
- Linux_3.1_静态函数库设计
- Linux_3.2_动态函数库设计
- 【Static】静态函数库设计
- Linux_3.5_时间编程
- 静态函数库与动态函数库的设计
- 静态和动态函数库设计
- Linux_3.4_库函数方式文件编程
- Linux_3.3_系统调用方式文件编程
- 嵌入式学习笔记5-静态函数库设计示例
- 静态函数库和动态函数库
- 静态函数库 和 动态函数库
- 函数库设计
- Lua初识 _函数库
- 静态函数库和动态函数库的制作
- (GOF23设计模式)_代理模式_静态代理
- Linux 函数库设计
- 【Shared】动态函数库设计
- linux应用程序(2)---静态函数库
- leetcode--Surrounded Regions
- Android 水平ListView的实现
- Android学习记录之--eclispe相关环境的搭建
- 解决cin输入类型错误
- TTL电平、CMOS电平、RS232电平的区别
- Linux_3.1_静态函数库设计
- 求众数(c语言)
- 2.11 带平滑线但无数据标签的散点图
- Spring 学习
- JavaScript简洁编程的idea
- 程序员修炼之路
- leetcode 5 -- Longest Palindromic Substring
- 内存查看命令之 - free
- 2.12 带平滑线但无数据标签的散点图