当前位置:网站首页 > 编程语言 > 正文

dos2unix命令的含义(dos2unix用法)



看完这篇文章之后,终于明白了编译到底怎么回事。

1

对于同一个语句,有如下三种:高级语言、低级语言、机器语言的表示

C语言:

a=b+1;

汇编语言:

mov -0xc(%ebp),%eax
add $0x1,%eax
mov %eax,-0x8(%ebp)

机器语言:

8b 45 f4
83 c0 01
89 45 f8

我们都知道,机器是只能做数字计算的,能够让机器去运算的、数字的语言就是机器语言,除此之外的所有计算机语言都是非机器语言。

这样的相对于机器语言的高级语言都需要一个转换,从高级、机器不可理解,转换为机器可理解的机器语言。

这样的一个转换过程就叫做编译(Compile),由编译器(Compiler)来完成。

由C转换为汇编语言这一过程是由汇编器(Assembler)来执行的。

C和汇编语言转换为机器语言都是由编译器来完成的。

2

这里面,C是可跨平台的,也可以说是与平台无关的。这里的平台有两种说法,一种是指计算机的体系(Architecture),另一种是指操作系统(Operate System),也可以是指两种的结合。

不同的平台,他们所需要的执行机器语言的指令集是不同的。C的跨平台性是指,只需要编写一份不需要修改的C程序代码,就可以在不同体系、不同操作系统的计算机上运行。

这都要靠编译器的功劳,编译器将C程序翻译为了适合当前计算机体系的机器语言。

下面说一下将C语言编译为机器语言的整个过程:

首先,我们写出一份C程序代码,命名该代码为hello.c,这个代码文件,我们称之为源代码(Srouce Code)。

然后我们运行编译器,对该源代码文件进行编译,在整个编译的过程中,编译器并不会执行该源代码,只是生成一份新的机器语言代码文件,如hello.out

这份新生成的代码文件称为目标代码(Object Code)或可执行代码(Executable)。

3

对于编译过程,里面还涉及到具体的一些可以说的细节步骤。在Linux下,使用gcc编译器:

❀ 预编译hello.c文件:

gcc -E -o hello.i hello.c

执行成功后就会生成一个新的hello.i的文件,可以用编辑器(Vim)查看它的内容,这个文件就是经过预编译后的内容。

预编译又称为预处理,是做些代码文本的替换工作。预编译可以处理#开头的指令,比如拷贝#include包含的文件代码,#define的宏定义的替换,条件编译等。

❀ 纯粹的进行编译:

gcc -S -o hello.s hello.i

.i文件写为hello.c也行,就是跳过手动预编译,直接完成预编译和编译两个过程。

这时会得到一个hello.s文件,打开看一下,里面是编译好的使用于当前体系结构的汇编代码。

❀ 把汇编代码处理为目标文件

gcc -c -o hello.o hello.s

.s文件换成.c也行,就是自动完成预编译、编译和汇编三个过程。

现在得到一个hello.o文件,这是一个二进制文件,但不是最后的可执行二进制文件,因为它还缺少最后一步连接处理。

最后对目标文件.o文件进行连接,我们这里就一个.o文件所以简单,经常是需要有多个.o文件需要连接。

❀ 连接执行:

gcc -o hello hello.o

如果把最后的.o文件写成.c,那就和最开始我们用hello.c编译时示范的那样了。实际上那样是完成了预编译、编译、汇编和连接一连串的过程。

-o选项给输出的文件重新命名而不使用gcc默认的文件名。

想了解更多gcc的姿势可以到GNU上去看看。



到此这篇dos2unix命令的含义(dos2unix用法)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 查询ip域名网(ip域名查询系统)2025-02-17 11:36:05
  • ip查域名查询(ip域名 查询)2025-02-17 11:36:05
  • ubuntu镜像文件下载官网(ubuntu 镜像下载)2025-02-17 11:36:05
  • 国内github访问下载太慢解决办法(国内访问github为什么慢)2025-02-17 11:36:05
  • 本机信息怎么查看苹果手机(苹果怎么看本机信息?)2025-02-17 11:36:05
  • 国内github手机app(github 手机app)2025-02-17 11:36:05
  • u盘制作pe系统启动盘后还能用吗(u盘制作pe系统启动盘怎么恢复)2025-02-17 11:36:05
  • pilow和pillow区别(pillow和autosleep哪个准确)2025-02-17 11:36:05
  • 进程控制基本原理(进程控制基本原理和方法)2025-02-17 11:36:05
  • mha是什么意思医学上(mhv是什么意思 医学)2025-02-17 11:36:05
  • 全屏图片