Linux C语言 系统介绍

UNIX系统介绍:最早版本的UNIX诞生于1970年的贝尔实验室,作者丹尼斯.里奇和肯汤普逊是最早的多用户、多任务、支持多种CPU处理器架构,高安全性、高可靠性、高稳定性的系统既能架构大型关键性的商用服务器,也能支持嵌入式设备Minix基于微内核架构的类UNIX操作系统,由此Linux之父林纳斯.托瓦兹受到了启发,才开发了第一个版本的LinuxLinux系统介绍:Linux,全称GNU/Linux,其内核由林纳斯·托瓦兹于1991年首次发布,是一个基于POSIX(可移植操作系统接口)的多用户、多
摘要由CSDN通过智能技术生成

UNIX系统介绍:

最早版本的UNIX诞生于1970年的贝尔实验室,作者丹尼斯.里奇和肯汤普逊

是最早的多用户、多任务、支持多种CPU处理器架构,高安全性、高可靠性、高稳定性的系统

既能架构大型关键性的商用服务器,也能支持嵌入式设备

Minix基于微内核架构的类UNIX操作系统,由此Linux之父林纳斯.托瓦兹受到了启发,才开发了第一个版本的Linux

Linux系统介绍:

Linux,全称GNU/Linux,其内核由林纳斯·托瓦兹于1991年首次发布,是一个基于POSIX(可移植操作系统接口)的多用户、多任务、支持多线程和多CPU的操作系统。

Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

相关知识:

Linux标准:小企鹅,因为企鹅是南极标志性动物,而且南极目前没被任意国家占领,是属于全人类的。

**GNU组织:**通用的非商业类UNIX系统,是目前全球最大的开源组织

由该组织负责Linux内核的维护升级

**GPL通用许可证:**在带GPL证书的基础上开发出来的软件,也必须支持GPL通用许可证

POSIX: 统一的操作系统接口规范,UNIX和Linux都遵循这个标准,因此它们的命令、API接口基本上是通用的

发行版:Linux只是内核,内核+Shell(命令解释器)+基础软件才是可用的操作系统

​ 其他的公司就可以根据Linux内核来设计制造出来不同版本的Linux系统,这就是Linux的发行版。

​ Ubantu、RedHat、debian、Centos、UOS

GNU编译工具:

多样化:

​ 支持各种编程语言,支持各种操作系统

​ gcc -v 查看版本信息

编译过程:

​ 预处理: gcc -E code.c -c code.i

​ 编译: gcc -S code.i -> code.s

​ 汇编: gcc -c code.s -> code.o

​ 链接: gcc a.o b.o c.o … -> a.out

文件类型:

​ .h 头文件

​ .h.gch 头文件的编译结果,优先使用

​ .c 源文件

​ .i 预处理文件

​ .s 汇编文件

​ .o 目标文件

​ .a 静态库文件

​ .so 共享库文件

编译参数:

​ -E 只预处理

​ -S 编译

​ -c 汇编

​ -o 指定编译结果的名字

​ -g 设置生成调试信息

​ -std 设置编译语法标准

​ -Wall 尽可能多地产生警告

​ -Werror 把警告当错误处理

​ -D 设置宏

​ -L 设置库文件的加载路径

​ -I(大写i) 设置头文件的查找路径

​ -l 指定要加载的库文件的名字 -lm

​ -On 优化等级 n 1、2、3

​ -pedantic 对于不符合 ANSI/ISO 语法标准的代码产生警告

#define swap(a,b) {typeof(a) t=a;a=b;b=t;} typeof

switch(n)

{

​ case 1…3:

}

fflush(stdout);

预处理指令:
#include <>/""	头文件包含
#define			定义宏常量、宏函数
	#			把标识符转换成字符串处理
	##			连接两个标识符
#ifndef			宏名不存在条件为真	
#ifdef			宏名存在时条件为真
#undef			删除宏
#if #elif #else #endif 条件判断

#error			直接提示错误,并且阻止生成执行文件,一般配合条件判断使用
#warning		直接提示警告
#line			设置行号,可以影响下面错误、警告、正常语句的行号

#pragma pack n(1/2/4)	设置对齐、补齐的最大字节数
#pragma once			相当于头文件卫士
#pragma GCC denpendency	
#pragma GCC poison xxx	设置xxx关键词为“毒药”,相当于禁止在代码中使用

库:

库文件就是目标文件的集合,可以被其他代码调用,把代码封装成库文件后方便使用、 方便管理、安全性高、保密性强

静态库:

​ 就是目标文件的集合,调用静态库文件就是把静态库中的二进制指令拷贝到可执行 文件中

​ code.c + math.a

​ 优点:运行速度相对比共享库较快,可执行文件运行时不需要依赖静态库

​ 缺点:可执行文件相对较大,当静态库修改后,可执行文件需要重新编译

共享库:

​ 就是没入口的可执行文件的集合,调用共享库时就是记录共享库二进制的指针的位 置即可,当执行可执行文件时共享库文件就会一起加载到内存中,可执行文件就可 以跳转到共享库中运行

​ 优点:可执行文件相对较小,当共享库修改后,可执行文件不需要重新编译

​ 缺点:运行速度比静态库慢,可执行文件运行时也需要依赖共享库

静态库:

制作静态库:

​ 1、编译出目标文件

​ gcc -c code.c

​ 2、打包目标文件生成静态库

​ ar -r lib(name).a a.o b.o c.o…

使用静态库:

​ 1、直接使用

​ gcc code.c libname.a

​ 2、指定库文件的位置

​ gcc code.c -Lpath -lxxx(name).a

​ gcc liba_test.c -L.lib -lqa -std=gnu99

​ 3、通过设置环境变量来指定库的路径

​ 1、打开系统配置文件 vim ~/.bashrc

​ 2、export

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值