当前位置: 代码迷 >> 综合 >> day01-UC-开发环境
  详细解决方案

day01-UC-开发环境

热度:9   发布时间:2023-12-17 15:10:54.0


两点建议:

1.注意团队合作

2.温故而知新

 

今天内容:

1.什么是操作系统?操作系统的作用

操作系统是一款软件。

管理计算机资源的软件。

计算机资源有软件资源和硬件资源。

常见的计算机操作系统

unix  GNU/LINUX   windows

ios macos

 

 

 

补充:

1)标准c函数库。本质就是一个仓库,

这个仓库表现在计算机里就是一个文件。

在仓库里存放的是C语言的函数。

 

2)shell是用户和操作系统交互的窗口

3)system call 本质就是C语言写成的函数。

 

void func1(void arg)

{

func2();

}

 

 

专业术语  分层、透明

 

2.GNU项目

GNU项目组

开放源代码。《GNU宣言》。

 

GNU项目组开发了很多实用的小项目。

gcc编译器、vi编辑器、bash

GNU/LINUX操作系统   linux内核和实用的app组成

 

3.计算机语言的发展历史

开关    灯     状态

1     1       2

2       2       4

3       3       8

。。。 。。。   。。。

32      32      4G

 

11111111,11111111,00000011,00000010  add

11111111,11111110,00000011,00000010  sub

 

if...else

while

for

 

4.复习C语言的知识

 

.c    源文件的后缀

.i    预处理后的源文件

.s    汇编程序的源文件后缀

.o     目标文件的后缀

 

补充:

1)echo  字符串

在显示器上显示字符串

echo   $变量的名字

将变量的内容显示在屏幕上

echo $?

将上一个命令的执行结果显示到显示器上

 

在linux上写c程序,规则,程序正常运行结束返回0,

不正常返回非0;

 

2)man帮助

man 1 commnad   linux命令的帮助信息

man 2 system call 察看系统调用的帮助信息

man 3 标准c库函数名   查看标准C库中的函数的帮助信息

 

 

以hello.c为例

a)预处理阶段

对.c源文件进行预处理

gcc -E hello.c -o hello.i

(一) 程序中的注释全部去掉

(二) 在C程序的源代码中以#(sharp)开头的,

都是预处理指令。

#include <stdio.h>

 

#include <>

#include ""

b)从预处理文件到汇编语言

gcc -S hello.i -o hello.s

 

c)将汇编语言汇编成目标文件(机器语言)

gcc -c hello.s -o hello.o

 

d)需要将目标文件和运行时库文件进行绑定(链接)

gcc hello.o -o hello

 

e) ./hello

 

集成:

gcc hello.c

gcc -v hello.c 显示所有的编译过程

 

5.大型软件的开发模型

第一步:定义头文件(代码参照tmath.h)

第二步:头文件中函数的实现

第三步:函数的调用

 

每一个.c源文件中可以包含多个函数。但是编译的单位是

源文件,不是函数。

 

 

补充:

变量的声明不为变量分配内存空间。

变量的定义为变量分配内存空间

 

宏定义:(代码参见pre_do.c)

#define PI 3.14

 

nm命令的使用

nm  二进制文件   察看文件的导出符号

T

U

 

静态链接:发生在编译阶段

 

动态链接:程序运行的时候,才发生的链接。

 

ldd 可执行文件   查看可执行文件依赖的库文件

 

 

框架和组件

 

6.typedef的使用

typedef是给类型起别名。

第一步:先定义变量

int count;

第二步:

typedef int count;

第三步:

count i;

 

int array_t[3];

typedef int array_t[3];

array_t a;==int a[3];

代码参见(array.c)

 

struct node{

int data;

struct node *next;

};

 

typedef struct node node_t;

 

typedef node_t *node_p;

node_p p;

node_t **q;

 

node_p *q;