您的位置:首页 > 运维架构 > Linux

Linux_3.1_静态函数库设计

2015-06-16 22:28 639 查看
(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运行

完成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: