学习日记(foundation-computer)
继续c++之旅
Chapter 3 Programming Environment
- Steps in developing a software
Editor/IDE-> Preprocessor->Compiler->Linker->Loader->CPU->Output
*Static Libraries->Linker
*Shared Libraries->Loader
*Input->CPU
(以上是电脑里面的流程)
- White Source Codes(Editor/IDE)
- Preprocess(Preprocessor)
- Compile(Compiler)
- Link Edit(Linker)
- Load(Loader)
- Execute(CPU)
*2-4是在build software,5-6是run software
解释~
-主要软件开发是为了通过programming language写一个指示写给电脑
-它通过程序员写一个指示(编码)给电脑
-电脑是不会明白指示通过programming language
-它需要通过compiler转换去machine language
- files会被compiler生成当跟其他有关的files为了产生一个可执行的file
-可执行的file需要loaded在电脑让它跑
-知道整个过程会帮助解决问题在开发的时候
可以参考这个图来来理解
- 介绍
就看一个比较简单的structure
-Source code editors
。一个基本编程工具
。专为编辑计算机程序源代码而设计的文本编辑器程序
。它可能是一个独立的应用程序,也可以内置于集成开发环境 (IDE) 或 Web 浏览器中
。源代码编辑器具有专门设计用于简化和加快键入源代码的功能
-preprocessor
。这时候源代码文件暂时展开,准备编译
。预处理器是一个指令,从#
。compilation的第一步是通过compiler发送code去preprocessor
。当预处理器遇到#include时,它会搜索要包含在编译中的指定标头文件。
。C++ preprocessor
*将包含的标头header文件file的内容复制到源代码文件中
*生成宏代码macro code
*用#define替换使用符号常量定义的符号常量。
-Compiler
。编译是指处理源代码文件(.c、.cc 或 .cpp)以生成"object"文件
。验证程序是否遵守编程语言的规则
。编译器将捕获某些类型的错误,并在发现错误时写出一条错误消息。
*编译器错误通常是天性中的语法(syntax error)
*有时编译器会发出警告消息
。如果未发现错误,它将程序转换为等效的计算机语言
*等效的计算机语言程序(object program)
*此步骤不会创建用户实际可以运行的任何内容
-Linker
。将一个或多个对象程序与库中的其他程序合并以创建可执行代码的程序。
。C++配备了用于执行常见操作或有时困难任务的预写代码库
。链接器通过将对未定义的符号的所有引用替换为其正确的地址来链接所有对象文件。
。链接阶段也可能产生一些错误。
*这些错误通常与重复或缺少的定义相关。
*当两个库或对象文件包含同一符号的定义时,会发生重复的定义错误。
。链接器完成后,将创建可执行文件。
-Static libraries
。与最终用户应用程序链接的对象代码的存档,这些代码可以成为可执行文件的一部分-linker
-Shared libraries
。包含可由另一个应用程序使用的数据和functions的模块(loader)
-Loader
。一种软件(系统实用程序),它加载程序从辅助内存到主内存,并准备执行
*Compile time loading – load static library – during linking
*Run-time loading – load shared library dynamically
。在运行加载期间,使用加载程序来获得更好的内存空间利用率
。每个操作系统都有自己的加载器,加载程序知道在哪里可以找到动态库
-Integrated Development Environment (IDE)
。为计算机程序员提供软件开发综合设施的软件应用程序
。集成了使程序员的工作更简单所需的所有软件。
。通常由源代码编辑器、构建自动化工具和调试器组成
。集成以下软件
*text editor to create the source program
*compiler to compile a source code to object code
*linker to link the object codes
*program to execute the program.
*debugger to debug the program.
。用于在高级语言C++包括
*Visual C++ , C++ Builder, Code::Block
*Dev-C++ will be use
-Debugging
。在软件代码中检测和删除现有和潜在错误(也称为"bug")的过程,这些错误可能导致其行为意外或崩溃
。Debugging tools (called debuggers)用于识别不同开发阶段的编码错误
- Multi file compilation process
*对于大型程序,完整程序不包含在单个文件中
评论
发表评论