抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

Linux C语言的一些知识, 涉及 计算机程序,语言发展,编译链接,数据,函数库等等.

1. 程序

  • 什么是程序?
  • 程序的作用是什么?

我们必须通过指令,指挥计算机执行我们想要它做的动作。 而依照顺序执行的一组指令就是程序。

1.1 程序特征

1, 程序是与计算机沟通的语言
2, 程序是由特定语法与关键字构成
3, 程序是一行一行执行的
4, 程序的执行, 从入口点开始, 原则上是由上而下, 从左而右执行。

入口点可能是一个方法或者是函数。。。

2. 程序语言的演化

1, 机器语言 — 计算机通过电信号模式 0/1/0/1…开关开关…
2, 汇编语言
3, 高级语言
4, 第四代语言
5, 自然语言 — 智能语言,开机,它就开机。关机,它就关机。

2.1 机器语言

1, 是计算机唯一能够执行的语言。
2, 其他语言必须先转化为机器语言
3, 指令有 0 与 1 组成, 称为机器码。
4, 指令难记忆但执行速度最快。
5, 不同类型机器有不同的机器码, 不具备移植性。

2.2 高级语言

1, 离机器越来越远
2, 语法接近人类的自然语言
3, 执行的单位不是指令, 而是语句, 一行语句。
4, 开发效率越来越高。
5, 必须编译成机器码
6, 移植性比较好。

2.3 第四代语言

1, 4GL, 也称为面向问题的程序语言。
2, 仅需告诉计算机 “做什么”, 不需要指挥计算机”如何做”
3, 大大提高开发效率
4, 如 SQL 语言及各种查询语言。

2.4 自然语言

1, 运用人工智能, 以接近口语的指令指挥计算机,如语音。
2, 还没有成熟。

3. 编译与链接

3.1 编译

1, 把源代码转化成机器码的过程。
2, 之前还会进行前期处理。
3, 过程中会进行语法检查。
4, 编译器 : 完成编译动作的程序

3.2 连接

1, 将可执行文件与包含文件 / 用到的函数库建立关联的过程。

4. 基本概念

4.1 数据

是计算机程序处理的对象, 可以是整数, 实数, 字符, 也可以是图像, 声音等的编码表示。

4.2 数据结构

指的是数据与数据间存在一种或多种特定关系。 与数据结构密切相关的便是数据的类型和数据的存放。

  • 程序设计
  • 编写程序的过程。
  • 软件
  • 程序 + 文档。

5. Linux C 概述

Linux 和 C 天生有不解之源, Linux 的操作系统内核就主要是用 C 写的, 另外 Linux 下的很多软件也是用 C 写的,特别是一些著名的服务软件, 如何 MySQL, Apache 等。

5.1 开发环境的构成

1, 编辑器 : 选择 VI
2, 编译器 : 选择 GNU C/C++ 编译器 gcc (免费开源的工具 - linux发型版本多数都自动安装)
3, 调试器 : 应用广泛的 gdb (JDK 学习的 GDB)
4, 函数库 : glibc
5, 系统头文件 : glibc_header

5.2 编译器 gcc

gcc (GNU CCompiler) 是GNU推出的功能强大 , 性能优越的多平台编译器, gcc 编译器能将C , C++语言源程序编译, 连接成可执行文件, 以下是 gcc 支持编译的一些源文件的后缀及其解释。

.c 为后缀的文件, C语言源代码文件
.h 为后缀的文件, 是程序所包含的头文件。
.i 为后缀的文件, 是已经预处理过的 C 源代码文件;
.o 为后缀的文件, 是编译后的目标文件。
.s 为后缀的文件, 是汇编语言源代码文件。

gcc -o hello hello.c

  • 用 gcc 来编译我们的源程序
  • -o 选项要求编译器给我们输出的可执行文件名为 hello
  • hello.c 是我们的源程序文件。
  • -c 选项 表示我们只要求编译器输出目标代码, 而不必要输出可执行文件
  • -g 选项表示我们要求编译器在编译的时候提供我们以后对程序进行调试的信息。
  • 执行 ./hello 就可以看到程序的输出结构。 (在当前目录下去找)

5.3 函数库 glibc

要构建一个完整的 C 开发环境, Glibc 是必不可少的, 它是 Linux 下 C 的主要函数库. glibc 有两种安装方式:

A. 安装成测试用的函数库, 在编译程序时用不同的选项来试用新的函数库。

B. 安装成主要的 C 函数库, 所有新编译程序均用的函数库

glibc 含几个附加包 : Linuxthreads, localedate 和 crypt, 他们的文件名随版本的不同而类似于下列 :

1
2
3
4
glibc-2.06.tar.gz
glibc-linuxthreads-2.0.6.tar.gz
glibc-localedate-2.0.6.tar.gz
glibc-crypt-2.0.6.tar.gz

glibc 是提供系统调用和基本函数的C库, 比如 open, malloc, printf 等等。 所有动态连接的程序都要用到它.

  • 系统头文件 : glibc_header
  • 缺少系统头文件,很多用到系统功能的C程序将无法编译。
  • 如果用户在安装过程中少装了这些包,就会无法编译C程序,解决方法:
  • 方法一:不推荐:重装一遍Linux系统。
  • 方法二:通过找一些Rpm包来迅速安装Linux的C开发环境。

C开发环境对应的rpm包

由于gcc包需依赖 binutils和cpp包,另外make包也是在编译中常用的,所以一共需要8个包来完成安装,它们是:

1
2
3
4
5
6
7
8
cpp-2.96-110.i386.rpm
binutils-2.11.93.0.2-11. i386.rpm
Glibc-2.2.5-31. i386.rpm
Glibc-kernheaders-2.4-7.14. i386.rpm
Glibc-common-2.2.5-34
Glibc-devel-2.2.5-34- i386.rpm
Gcc-2.96-110.i386.rpm
Make-3.79.1-8. i386.rpm

查看glibc的版本:ls /lib/libc-*
查看gcc版本号: gcc –version

5.4 C 程序的组成

对于一个 C 程序, 安装完成后可以分成三个组成 :

  • 可执行文件
  • 包含文件
  • 库文件

可执行文件是最终运行的命令, 包含文件是该 C 程序 include 的定义文件, 库文件则是该 C 程序自定义的库。

比如用 RPM 安装的 Mysql 数据库 :

  • 可执行文件放在 /usr/bin 下
  • 包含文件放在 /usr/include/mysql 下
  • 库文件在 /usr/lib/mysql 下

只有系统可以找到程序对应的包含文件和库文件, 程序可执行文件才能正常运行。

6. 小结

  1. 开发环境的构成
  2. GNU 的 gcc 编译器
  3. glibc 函数库
  4. Linux 下 C 程序开发过程
  5. 第一个 C 程序
  6. C 程序结构