建立自己的 C 语言函数库
资料文章
加入时间:2007-4-12 19:27:28 网络教育学院 张俊
点击:307
任何操作系统下的 C 语言程序都是由若干函数组成,除了主函数 main()是在程序中主动执行以外,其它子函数都是经过调用
后才执行。这些子函数包含二类:一类是 C 语言在各自操作系统支撑环境的标准函数库,不同的操作系统下的函数库除了保持一
些基本的函数外,像标准 I/O 函数、文件操作等,各系统都根据自己操作系统的特点有所增舍。如 xenix/unix 下拥有的进程
控制、进程通信、终端管理、文件存取权限管理、以及在配有图形终端环境下的图形处理。而 dos 下的 Turbo c 除了图形处理功
能外,其它是没有的,这是由于它受制于 dos。我们知道不同系统标准库建立的目的是将常用函数预先编好放在函数库中供用户
共享,以免用户重复做这些工作,这些系统标准函数库中函数它们在链接时装配到用户程序中。另一类子函数是用户编写的,它
们可直接嵌入在用户程序中。但当我们一组人要开发一个大项目,且有若干特定函数(针对这项目用户自己实现的)经常需要使
用就可以将这特定的函数建立成一个函数库文件,以便在这项目或其它项目开发中象调用标准函数一样来调用它们。一般 C 语言
环境中都提供用户建立及修改函数库能力。下面就以广泛使用的两类操作系统 dos(turboc 2.0 集成环境)和 xenix/unix 开
发系统自身的环境阐述建立和使用用户自定义函数的
步骤:
一、dos 的 turboc 2.0 环境:
1.现将二个函数 sub1()及 sub2()建立成一个函数库文件取名 ylib.lib。两个函数的类型及形参如下:void sub1(void);
float sub2(int i,float x)将它们分别建立一个文件,取名为 sl.c
s2.c,再用命令 tcc 对它们分别编译后产生两个目标文件 s1.obj 及
2.obj,最后使用 tlib 命令建立函数库文件 wylib.lib,并建立相应
的列表文件(列表文件主要用来检查主函数库情况),命令格式如下:
tcc s1.c s2.c
tlib mylib +s1 +s2,mylib.lst
将产生的 mylib.lib 函数库文件拷贝到标准库目录下 c:\tc\lib
2.建立其首标文件(假设取名为 myfunc.h)内容如下:
extern void sub1(void);
extern float sub2(int,float);
将此文件拷贝到目录下 c:\tc\include
3.在用户的程序中按下列方式直接使用即可
# include<myfunc.h>
main()
{…
调用 sub1();sub2();
…
}
4.在 Turboc 下用编译命令 tcc 对用户程序进行编译及链接。设其用户程序文件名为 my.c,使用命令格式:
tcc-Ic:\tc\include -Lc:\tc\lib my.c mylib.lib
执行完后就会产生一个 my.exe 可执行文件,其中-I 后面指出首标文件的目录,而-L 后面指出函数库的子目录,最后两个分
别是源程序文件及函数库文件。
关于 tcc 和 tlib 的详细用法在系统提示符下键入 c:\tc\tcc 和 c:\tc\tlib 可得到帮助。
二、xenix/unix 下开发系统自身 c 语言环境
1.使用 cc 编译器任选项“-c”提供部分编译功能,部分编译产生目标文件(s1.o 及 s2.o)
cc -c s1.c s2.c(形成 s1.o 及 s2.o)
2.用建库命令 ar 建库,格式:
ar uv mylib.a s1.o s2.o
ranlib mylib.a
前一条命令建立了一个名为 mylib.a 的档案库,其中选项 u 用来创建库文件,v 用来显示执行情况,关于命令 ar 的详细用法可
在系统提示符下键入 help ar
后一条命令生成一个随机库,在库的开始处增加一个名为“-SYMDEF”的档案库内容表,实现档案库到新形式的转换,形成了 c
语言可用的格式库。
3.将新建的库拷贝到库目录下,:Xenix 的库目录文件是/lib/386 及/lib,所以用户将自己的库放入两个目录下:
cp mylib.a/lib/386/mylib.a 或 cp mylib.a/lib/mylib.a
4.和 dos 操作系统建立首标文件一样建立头标文件,将其文件拷贝到目录下:/usr/includecp myfunc.h/usr/include/
my
func.h
5.至此,用户程序可直接用库函数编程。
# include<myfunc.h>
nain()
{…
调用 sub1();sub2();
…}
6.编译时用 cc -o my -lmylib my.c 将得到可执行文件名为 my。格式-o 后面指明被编译成可执行文件名,-l 指名所需连
接的库。关于 cc 编译器的用法可在系统找字符下键入 help cc。