认识操作系统

一、UNIX系统介绍

诞生于1971年美国AT&T公司的贝尔实验室,主要开发者是丹尼斯.里奇、肯.汤普逊。

该系统的主要特点是支持多用户、多任务,并支持多种处理器架构,同时具有高安全性、高可靠性、高稳定性,既可以构建大型关键业务系统的商业服务器,也可以构建面向移动终端、手持设备、可穿戴设备的嵌入式应用。

二、Linux系统介绍

是一款类UNIX系统,免费开源,不同的发行版使用相同的内核,一般用在手机、平板、路由器、台式计算机、大型计算机、超级计算机,从严格意义上来说,Linux仅指的是操作系统内核,隶属于GNU工程,发明人叫 Linus Benedict Torvalds,1991年第一次公开在校内网的FTP服务器上。

Linux系统的Logo:

是一只企鹅,是南极的标志性动物,而目前南极不属于任何国家,为全人类所共有的,而Linux用它来当操作系统就意味这款系统属于全人类。

Minix操作系统:

荷兰的Andrew S. Tanenbaum教授所开发的一款不包含任何UNIX源码的类UNIX系统,Linus Torvalds深受Minix的启发写出了第一版本的Linux内核。

GNU工程:

发起于1984年,由自由软件基金会提供支持,它基本原则就是共享,目的是发展出一个免费且开源的类UNIX系统,名称来自GNU's Not UNIX!的递归缩写,因为GNU的设计类似UNIX,但它不包含具著作权的Unix代码。GNU的创始人,理查德·马修·斯托曼,将GNU视为“达成社会目的技术方法”。

GNU的发展仍未完成,其中最大的问题是具有完备功能的内核尚未被开发成功。GNU的内核,称为Hurd,但是其发展尚未成熟。在实际使用上,多半使用Linux内核、FreeBSD等替代方案,作为系统核心,其中主要的操作系统是Linux的发行版。Linux操作系统包涵了Linux内核与其他自由软件项目中的GNU组件和软件,可以被称为GNU/Linux。

POSIX标准:

可移植操作系统接口(Portable Operating System Interface,缩写为POSIX)是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称。

Linux完全遵循了这个标准,所以两个操作系统的API,名字相同、参数相同、返回值相同,在Linux下编写的代码,经过稍微修改可移植到UNIX上。

GPL通用公共许可证:

GNU通用公共许可证简称为GPL,是由自由软件基金会发行的用于计算机软件的协议证书,使用该证书的软件被称为自由软件。允许对某成果及其派生成果的重用、修改和复制,对所有人都是自由的,但不能声明做了原始工作,或声明由他人所做。

Linux发行版:

Linux只是内核,内核+Shell+基础软件才是可用的操作系统。

其它公司可以根据Linux内核制作出不同版的Linux系统。

ubuntu、redhat、CentOS、debian、UOS

三、GNU编译工具

是GNU组织为了编译Linux内核源码而开发的一款编译工具,经过长时间的发展目前已经成为一个编译平台,能够支持多种编程语言、能够在主流操作系统中使用,编译C代码的工具gcc,编译C++代码的工具g++

通过 工具名 -v 参看编译工具的版本信息

gcc常用的编译参数:
gcc [选项参数] 文件
	-E			#	预处理
	-S			#	生成汇编文件
	-c			#	生成目标文件
	-o			#	设置编译结果的名字 -ohehe == -o hehe
	-I			#	指定要导入的头文件的路径 -I /path
	-l			#	指定要导入的库文件 例如:-lm导入数据库
	-L			#	指定要链接的共享库的路径
	-D			#	编译时定义宏 -D宏名
	-g			#	编译时添加调试信息,这样的编译结果可以通过gdb调试
	-Wall		#	尽可能多的产生警告,编译器更严格地检查代码
	-Werror		#	把警告当做错误处理
	-std		#	指定编译器遵循的语法标准 gnu89\gnu99\gnu11 
	-pendantic 	#	对一些不符合ANSI\ 标准的代码、扩展代码会产生警告
				# case a ... b:
gcc相关的文件类型:
xxx.c			#	源文件
xxx.h			#	头文件
xxx.i			#	预处理文件
xxx.s			#	汇编文件
xxx.o			#	目标文件	
xxx.h.gch		#	头文件的编译结果,用于检查头文件语法,必须立即删除
libxxx.a		#	静态库文件 Windows中以.lib结尾
libxxx.so		#	动态库文件\共享库文件 Windows中以 .dll结尾
gcc把C语言变成可执行程序的过程:
#	1、预处理
gcc -E xxx.c				#把预处理结果显示到屏幕上
gcc -E xxx.c -o xxx.i		#生成.i结尾的预处理文件

#	2、把预处理文件 编译成汇编文件
gcc -S xxx.i				#生成.s结尾的汇编文件

#	3、把汇编文件翻译成二进制的目标文件
gcc -c xxx.s				#生成.o结尾的目标文件

#	4、把若干个目标文件、库文件合并生成可执行文件
gcc a.o b.o c.o ...			#默认生成a.out可执行文件
gcc支持的预处理指令:
#include
#define
#undef
#if
#elif
#ifdef
#ifndef
#endif
#wanring 	#	在预处理时产生警告信息
#error		#	在预处理时产生错误,并阻止可执行文件生成
#line 		#	指定行数
#pragma pack(1\2\4\8)	#	设置按1\2\4\8字节数进行内存对齐、补齐
#pragma once	#	相当于头文件卫士
#pragma GCC posion <标识符>	#	禁用标识符
#pragma GCC dependency "文件名"  # 能够监控文件 如果该文件比本文件更新则产生警告
gcc预定义的宏:
int main(int argc,const char* argv[])
{
    printf("%s\n",__FILE__);            //获取当前文件名
    printf("%s\n",__func__);            //获取当前函数名    
    printf("%s\n",__FUNCTION__);        //获取当前函数名
    printf("%d\n",__LINE__);            //获取行数
    printf("%s\n",__DATE__);            //获取日期
    printf("%s\n",__TIME__);            //获取时间       
}

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值