导航:首页 > 源码编译 > 编译手册怎么写

编译手册怎么写

发布时间:2025-01-08 21:59:12

‘壹’ 软件开发文档的分类

1. 《功能要求》 -- 来源于客户要求和市场调查,是软件开发中最早期的一个环节。客户提出一个模糊的功能概念,或者要求解决一个实际问题,或者参照同类软件的一个功能。有软件经验的客户还会提供比较详细的技术规范书,把他们的要求全部列表书写在文档中,必要时加以图表解说。这份文档是需求分析的基础。
2. 《投标方案》 -- 根据用户的功能要求,经过与招标方沟通和确认,技术人员开始书写《投标方案》,方案书一般包括以下几个重要的章节: 前言 -- 项目背景、公司背景和业务、技术人员结构、公司的成功案例介绍等。 需求分析 -- 项目要求、软件结构、功能列表、功能描述、注意事项等。 技术方案 -- 总体要求和指导思想、技术解决方案、软件开发平台、网络结构体系等。 项目管理 -- 描述公司的软件开发流程、工程实施服务、组织和人员分工、开发进度控制、软件质量保证、项目验收和人员培训、软件资料文档等。 技术支持 -- 公司的技术支持和服务介绍、服务宗旨和目标、服务级别和响应时间、技术服务区域、技术服务期限、授权用户联系人等。 系统报价 -- 软、硬件平台报价列表、软件开发费用、系统维护费用等。 项目进度 -- 整个项目的进度计划,包括签署合同、项目启动、需求分析、系统分析、程序开发、测试维护、系统集成、用户验收、用户培训等步骤的时间规划。
3. 《需求分析》 -- 包括产品概述、主要概念、操作流程、功能列表和解说、注意事项、系统环境等。以《功能要求》为基础,进行详细的功能分析 ( 包括客户提出的要求和根据开发经验建议的功能 ) ,列出本产品是什么,有什么特殊的概念,包括哪些功能分类,需要具备什么功能,该功能的操作如何,实现的时候该注意什么细节,客户有什么要求,系统运行环境的要求等。这里的功能描述跟以后的使用手册是一致的。
4. 《技术分析》 -- 包括技术选型、技术比较、开发人员、关键技术问题的解决、技术风险、技术升级方向、技术方案评价,竞争对手技术分析等。以《需求分析》为基础,进行详细的技术分析 ( 产品的性能和实现方法 ) ,列出本项目需要使用什么技术方案,为什么,有哪些技术问题要解决 ,估计开发期间会碰到什么困难,技术方案以后如何升级,对本项目的技术有什么评价等。
5. 《系统分析》 -- 包括功能实现、模块组成、功能流程图、函数接口、数据字典、软件开发需要考虑的各种问题等。以《需求分析》为基础,进行详细的系统分析 ( 产品的开发和实现方法 ) ,估计开发期间需要把什么问题说明白,程序员根据《系统分析》,开始在项目主管的带领下进行编码。
6. 《数据库文档》 -- 包括数据库名称、表名、字段名、字段类型、字段说明、备注、字段数值计算公式等。以《系统分析》为基础,进行详细的数据库设计。必要时可以用图表解说,特别是关系数据库。
7. 《功能函数文档》 -- 包括变量名、变量初值、功能,函数名,参数,如何调用、备注、注意事项等。以《系统分析》为基础,进行详细的说明,列出哪个功能涉及多少个函数,以便以后程序员修改、接手和扩展。
8. 《界面文档》 -- 包括软件外观、界面素材、编辑工具、文件名、菜单、按钮和其它界面部件的要求,这里与软件完成后的运行界面是一致的。
9. 《编译手册》 -- 包括服务器编译环境、操作系统、编译工具、 GNU 的 C++ 编译器版本信息、目录说明、程序生成、源程序文件列表、 Makefile 配置及其相关程序的对应关系列表。客户端的编译过程、编译结果、编译示例、编译环境、操作系统、编译工具、源文件列表和制作安装程序的过程。
10. 《 QA 文档》 -- 包括产品简介、产品原理、产品功能列表、功能描述、功能流程、执行结果、数据库结构、测试要求等,提供给软件测试人员使用。
11. 《项目总结》 -- 包括项目简介、项目参与人员和开发时间、项目风险管理过程、项目功能列表、项目结构特点、技术特点、对项目的升级建议、对以后的项目的建议、人员素质情况等。 1. 《产品简介》 -- 包括公司背景、产品概念、适用范围、产品功能、功能特点、运行要求和公司联系地址。
2. 《产品演示》 -- 包括公司简介、产品背景、产品描述、产品特点、产品作用、适用范围、使用分析、功能模块、解决问题、合作伙伴、成功案例等。一般用 Power point 或者 VCD 录制软件实现。
3. 《疑问解答》 -- 列出用户关心的问题和处理方法。用于解答软件的操作功能和解决用户的疑难问题。
4. 《功能介绍》 -- 以《需求分析》为书写基础,包括软件介绍、软件结构、功能列表、功能描述和公司联系地址。
5. 《技术白皮书》 -- 以《技术分析》为书写基础,包括功能实现、技术选型、关键技术问题的解决、技术方案特点、技术升级方向等。
6. 《评测报告》 -- 第三方权威评测报告。包括评测目的、评测范围、评测环境、评测内容、实测数据、性能表现、结果分析和评测总结等。
7. 《安装手册》 -- 包括系统环境、运行平台、产品安装过程、初始环境设置、安装记录等。
8. 《使用手册》 -- 包括产品简介、功能列表、功能描述和解释、功能操作、客户服务和联系方式等。
9. 《维护手册》 -- 包括产品简介、系统须知、初始环境设置、系统配置、数据管理和备份、技术问题解答和联系方式等。
10. 《用户报告》 -- 包括产品简介、购买时间、使用目的、使用时间、使用地点、实施过程、出现问题和解决、产品总结和建议等。
11. 《销售培训》 -- 包括项目简介、产品功能、产品特点、商业优势、系统运行环境、适用范围、目标客户等。 第一、需求分析文档
用户需求分析文档是指在和客户进行沟通时,把用户所要求的信息记录下来,根据用户的要求进行需求分析,规划出我们要开发的软件所要实现哪些功能。
第二、概要设计文档
概要设计:顾名思义,就是对我们所要开发的软件进行一个整体的概括,把这个软件所包含的功能模块作一个设计,以后我们在开发的时候就有目标,有方向了。
第三、系统设计文档
系统设计,就是对概要的一个详细的实施,就是分析我们所要开发软件各大功能模块中所包含的小模块,把这些小模块都一一列举出来,然后再对软件开发人员进行有条理的进行开发任务的分配。
第四、详细设计文档
详细设计文档,主要是把我们每个小模块,小功能的业务逻辑处理用文字的方式表达出来,让程序员在编码的时候有一个依据和参照;同时,在进行详细文档设计的时候,有的软件公司也会根据不同的项目作出相应的《软件开发代码规范》性文档。以保障我们所做工作的统一性。
第五、软件测试文档
当我们参照软件详细设计文档编码完成后,接着就会根据我们所实现的功能,进行软件测试文档的编写;大多测试文档有两类,一类是软件单体测试文档,一类是软件结合测试文档;顾名思义,单体测试:就是对软件中每个小的方法,一个独立的方法进行测试的文档;结合测试:就是把多个功能模块组合到一起进行测试,主要是为了检测每个功能模块之前的交互性和功能的结合实现性。
第六、软件完成后的总结汇报型文档
不管所开发软件的规模大小,在一个软件开发结束后,我们都会把开发过中的问题和项目开发总结一起记录下来,以防以后在开发过程中再有类似问题出现,提高我们的开发效率。
根据软件开发公司的规模、标准和客户的需求不同,开发文档的种类和数量也不同,我在这里和大家讨论的软件开发相关文档都是最基础的;在软件行业有一句话:一个软件能否顺利的完成并且功能是否完善,重要是看这个软件有多少文档,软件开发文档是一个软件的支柱,如果你的开发文档漏洞百出,那么你所开发出来的软件也不可能会好;开发文档的好坏可以直接影响到所开发出来软件的成功与否。

‘贰’ 如何将自己编写好的代码弄成应用软件啊

你需要的是编译器,比如TurboC,MSC,或者VC等等,你写的C代码只是源程序而已,需要经过C编译器编译成可执行的EXE文件。C编译器有很多,上面提到的就是比较常用的,至于编译器的使用,你得另查一查使用手册,一般而言,编译器都带有IDE的集成编程环境,可以作为程序的编辑器(别把编辑器和编译器弄混了,编辑器就是可以输入源代码的软件工具,如记事本就是一个最简单的编辑器,编译器就是用于编译特定语言源代码的软件),然后一般都有一个编译(Compile)按钮(或者编译命令),编译时编译器会检查你的源代码是否有语法错误,如果没有错误,还会使用链接(Link)工具将你的程序链接成为可执行的Exe文件,至此,你的源程序就成了可运行的程序了。

运行EXE文件是不用源代码的,它与编写程序的语言无关,各种编程语言写成的源程序经过该编程语言的编译器可以被编译成在计算机上可以被运行的执行程序。

‘叁’ 如何 编译 c code mikefile

Makefile 介绍

make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。

首先,我们用一个示例来说明Makefile的书写规则。以便给大家一个感兴认识。这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。我们的规则是:

1. 如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。

2. 如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。

3. 如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。

只要我们的Makefile写得够好,所有的这一切,我们只用一个make命令就可以完成,make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自己编译所需要的文件和链接目标程序。

1.1 Makefile的规则

在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则。 target ... : prerequisites ...

command

...

...

target也就是一个目标文件,可以是Object
File,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。

prerequisites就是,要生成那个target所需要的文件或是目标。

command也就是make需要执行的命令。(任意的Shell命令)

这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于

prerequisites中的文件,其生成规则定义在command中。说白一点就是说,prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。这就是Makefile的规则。也就是Makefile中最核心的内容。

说到底,Makefile的东西就是这样一点,好像我的这篇文档也该结束了。呵呵。还不尽然,这是Makefile的主线和核心,但要写好一个Makefile还不够,我会以后面一点一点地结合我的工作经验给你慢慢到来。内容还多着呢。:)

1.2 一个示例

正如前面所说的,如果一个工程有3个头文件,和8个C文件,我们为了完成前面所述的那三个规则,我们的Makefile应该是下面的这个样子的。

edit : main.o kbd.o command.o display.o \

insert.o search.o files.o utils.o

cc -o edit main.o kbd.o command.o display.o \

insert.o search.o files.o utils.o

main.o : main.c defs.h

cc -c main.c

kbd.o : kbd.c defs.h command.h

cc -c kbd.c

command.o : command.c defs.h command.h

cc -c command.c

display.o : display.c defs.h buffer.h

cc -c display.c

insert.o : insert.c defs.h buffer.h

cc -c insert.c

search.o : search.c defs.h buffer.h

cc -c search.c

files.o : files.c defs.h buffer.h command.h

cc -c files.c

utils.o : utils.c defs.h

cc -c utils.c

clean :

rm edit main.o kbd.o command.o display.o \

insert.o search.o files.o utils.o

反斜杠(\)是换行符的意思。这样比较便于Makefile的易读。我们可以把这个内容保存在文件为“Makefile”或“makefile”的文件中,然后在该目录下直接输入命令“make”就可以生成执行文件edit。如果要删除执行文件和所有的中间目标文件,那么,只要简单地执行一下“make
clean”就可以了。

在这个makefile中,目标文件(target)包含:执行文件edit和中间目标文件(*.o),依赖文件(prerequisites)就是冒号后面的那些
.c 文件和 .h文件。每一个 .o 文件都有一组依赖文件,而这些 .o 文件又是执行文件 edit
的依赖文件。依赖关系的实质上就是说明了目标文件是由哪些文件生成的,换言之,目标文件是哪些文件更新的。

在定义好依赖关系后,后续的那一行定义了如何生成目标文件的操作系统命令,一定要以一个Tab键作为开头。记住,make并不管命令是怎么工作的,他只管执行所定义的命令。make会比较targets文件和prerequisites文件的修改日期,如果prerequisites文件的日期要比targets文件的日期要新,或者target不存在的话,那么,make就会执行后续定义的命令。

这里要说明一点的是,clean不是一个文件,它只不过是一个动作名字,有点像C语言中的lable一样,其冒号后什么也没有,那么,make就不会自动去找文件的依赖性,也就不会自动执行其后所定义的命令。要执行其后的命令,就要在make命令后明显得指出这个lable的名字。这样的方法非常有用,我们可以在一个makefile中定义不用的编译或是和编译无关的命令,比如程序的打包,程序的备份,等等。

1.3 make是如何工作的

在默认的方式下,也就是我们只输入make命令。那么,

1. make会在当前目录下找名字叫“Makefile”或“makefile”的文件。

2. 如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。

3. 如果edit文件不存在,或是edit所依赖的后面的 .o
文件的文件修改时间要比edit这个文件新,那么,他就会执行后面所定义的命令来生成edit这个文件。

4.
如果edit所依赖的.o文件也存在,那么make会在当前文件中找目标为.o文件的依赖性,如果找到则再根据那一个规则生成.o文件。(这有点像一个堆栈的过程)

5. 当然,你的C文件和H文件是存在的啦,于是make会生成 .o 文件,然后再用 .o 文件声明make的终极任务,也就是执行文件edit了。

这就是整个make的依赖性,make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make根本不理。

‘肆’ 合泰单片机内置eeprom只能读不能写,要怎么解决

我也遇到这样的问题。没人给出答案,我来说一下吧。(主要是针对V3编译C)

根据Holtek_C_Compiler_V3_FAQ(950).pdf的描述,V3不保证编译后的指令符合EEPROM写入顺序。根据BS86的数据手册,WREN 和 WR一定要符合顺序。

我编译后的指令出现的是LSET WREN以及LSET WR,这个就出问题了。芯片需要的是SET。

解决方法是根据官方FAQ的描述
"5.5 对于写 EEPROM 有限制的 MCU ( 需连续 set wren, wr, flag),如何使用
V3 写 EEPROM?"
下面是代码

//RefertoHoltek_C_Compiler_V3_FAQ(950).pdf
typedefstruct{
unsignedcharbit0:1;
unsignedcharbit1:1;
unsignedcharbit2:1;
unsignedcharbit3:1;
unsignedcharbit4:1;
unsignedcharbit5:1;
unsignedcharbit6:1;
}iar_bits;

DEFINE_SFR(iar_bits,iar1,0x02);
#defineiar1_3 iar1.bit3
#defineiar1_2 iar1.bit2
#defineiar1_1 iar1.bit1
#defineiar1_0 iar1.bit0
...
uint8_tbkup;
_eea=u8Addr;
_eed=u8NewData;

_mp1l=0x40;
bkup=_mp1h;
_mp1h=0x01;
_emi=0;
iar1_3=1;
iar1_2=1;
_emi=1;

while(iar1_2)
{
}
_iar1=0;
_mp1h=bkup;
...

官方的解决方案产生的代码跟数据手册中的一直:

				;129		iar1_3=1;
0D0D 3182 set__iar1[0].3《《以前这里是LSETWREN


;130 iar1_2=1;
0D0E 3102 set__iar1[0].2《《以前这里是LSETWR

‘伍’ .h文件中只是函数的声明,而函数的定义在哪呢

标准库的代码都是被编译好的库,通过头文件给出定义,让你可以使用,你编译程序的时候,连接器会把库中的代码连接进来。

想知道函数怎么用就要查手册。

后面两句,确切的说是三句是用来避免重复包含的,一般这样写

#ifndef abcde
#define abcde

......//一些定义

#endif

如果你这个文件没被包含过,那么abcde就没有定义,所以编译器会定义个abcde然后看你下面的内容。如果你已经包含过这个文件了,那abcde就有定义了,多次包含的时候,编译器就不会理睬下面的内容了。

阅读全文

与编译手册怎么写相关的资料

热点内容
播放安卓是什么诗 浏览:783
jsp中编译中文 浏览:236
手机桌面文件夹变小了怎么办 浏览:573
日程管理app哪个好 浏览:701
黑马程序员云开发实战 浏览:597
加密空间上传作品 浏览:398
备忘录清空的如何恢复安卓 浏览:170
剑三霸刀宏命令 浏览:36
手机zip文件的解压方式 浏览:189
顺丰金融app在哪里可以下载 浏览:930
微信无法应用加密怎么办 浏览:464
sw装配体能不能加密 浏览:751
python列表中提取偶数 浏览:835
腾讯云服务器购买教程技巧 浏览:808
盐官观潮时间算法 浏览:931
虚拟机linux上不了网 浏览:444
pythonu字符串转 浏览:205
没有pc版本的安卓系统怎么办 浏览:901
域服务器如何备份 浏览:857
程序员数据狗 浏览:554