Isabella
---- I fell upon the thorn of life, I bleed.
  任何操作系统下的C语言程序都是由若干函数组成,除了主函数main()是在程序中主动执行以外,其它子函数都是经过调用后才执行。这些子函数包含二类:一类是C语言在各自操作系统支撑环境的标准函数库,不同的操作系统下的函数库除了保持一些基本的函数外,像标准IO函数、文件操作等,各系统都根据自己操作系统的特点有所增舍。如xenixunix下拥有的进程控制、进程通信、终端管理、文件存取权限管理、以及在配有图形终端环境下的图形处理。而dos下的Turbo c除了图形处理功能外,其它是没有的,这是由于它受制于dos。我们知道不同系统标准库建立的目的是将常用函数预先编好放在函数库中供用户共享,以免用户重复做这些工作,这些系统标准函数库中函数它们在链接时装配到用户程序中。另一类子函数是用户编写的,它们可直接嵌入在用户程序中。但当我们一组人要开发一个大项目,且有若干特定函数(针对这项目用户自己实现的)经常需要使用就可以将这特定的函数建立成一个函数库文件,以便在这项目或其它项目开发中象调用标准函数一样来调用它们。一般C语言环境中都提供用户建立及修改函数库能力。下面就以广泛使用的两类操作系统dosturboc 20集成环境)和xenixunix开发系统自身的环境阐述建立和使用用户自定义函数的
步骤:
一、dosturboc 20环境:
1
.现将二个函数sub1()及sub2()建立成一个函数库文件取名yliblib。两个函数的类型及形参如下:void sub1void);float sub2int ifloat x)将它们分别建立一个文件,取名为slc
s2
c,再用命令tcc对它们分别编译后产生两个目标文件s1obj
2
obj,最后使用tlib命令建立函数库文件wyliblib,并建立相应
的列表文件(列表文件主要用来检查主函数库情况),命令格式如下:
tcc s1
c s2
tlib mylib 
s1 s2myliblst
将产生的myliblib函数库文件拷贝到标准库目录下c:\tclib
2
.建立其首标文件(假设取名为myfunch)内容如下:
extern void sub1
void);
extern float sub2
intfloat);
将此文件拷贝到目录下c:\tcinclude
3
.在用户的程序中按下列方式直接使用即可
 includemyfunch 
main
() 

调用sub1();sub2();


4
.在Turboc下用编译命令tcc对用户程序进行编译及链接。设其用户程序文件名为myc,使用命令格式:
tcc
Ic:\tcinclude Lc:\tclib myc myliblib
执行完后就会产生一个myexe可执行文件,其中-I后面指出首标文件的目录,而-L后面指出函数库的子目录,最后两个分别是源程序文件及函数库文件。
关于tcctlib的详细用法在系统提示符下键入c:\tctccc:\tctlib可得到帮助。
二、xenixunix下开发系统自身c语言环境
1
.使用cc编译器任选项c”提供部分编译功能,部分编译产生目标文件(s1os2o
cc 
c s1c s2c(形成s1os2o
2
.用建库命令ar建库,格式:
ar uv mylib
a s1o s2o
ranlib mylib
a
前一条命令建立了一个名为myliba的档案库,其中选项u用来创建库文件,v用来显示执行情况,关于命令ar的详细用法可在系统提示符下键入help ar
后一条命令生成一个随机库,在库的开始处增加一个名为SYMDEF”的档案库内容表,实现档案库到新形式的转换,形成了c语言可用的格式库。
3
.将新建的库拷贝到库目录下,:Xenix的库目录文件是/lib386及/lib,所以用户将自己的库放入两个目录下:
cp mylib
alib386mylibacp mylibalibmyliba
4
.和dos操作系统建立首标文件一样建立头标文件,将其文件拷贝到目录下:/usrincludecp myfunchusrincludemyfunch
5
.至此,用户程序可直接用库函数编程。
 includemyfunch
nain
()

调用sub1();sub2();

6
.编译时用cc o my lmylib myc将得到可执行文件名为my。格式-o后面指明被编译成可执行文件名,-l指名所需连接的库。关于cc编译器的用法可在系统找字符下键入help cc
posted on 2007-02-05 14:20  李昀璟  阅读(1039)  评论(0)    收藏  举报