Linux_3.1_静态函数库设计

来源:互联网 发布:邮箱服务器软件 编辑:程序博客网 时间:2024/06/05 18:09
(1) 外部函数

函数库与系统调用区别:

系统调用是由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运行

完成!

 

0 0
原创粉丝点击