×

可执行的二进制文件

可执行的二进制文件(可执行的二进制文件是)

admin admin 发表于2023-04-04 16:32:10 浏览48 评论0

抢沙发发表评论

本文目录一览:

可执行文件是什么

可执行文件就是由源代码编译后生成的二进制文件。

因为计算机只能识别0和1,所以只有编译成可执行文件才能运行。

进程是一个动态概念,指当前在运行的服务;所以在运行的可执行文件属于进程,没有运行的就不算了。

Unix中可执行程序能不能在Windows中运行?为什么?

不能。

1、可执行的二进制文件包含了机器指令、数据资源、程序运行资源,可执行文件执行之前,操作系统要做一些准备工作,根据不同的操作系统,准备工作是不同的。因此,可执行文件的格式是不相同的,Windows下可执行文件格式为PE格式,linux下可执行文件为elf格式。所以,文件格式的不同导致了可执行文件是不可以直接跨平台使用。-可执行的二进制文件

2、由于不同的操作系统API不同,而一个可执行文件要执行时都需要操作系统的交互才能完成,而不同的操作系统交互操作的方法不同,因此,不同操作系统下的可执行文件不能直接在对方那里直接运行。

扩展资料

UNIX/LINUX 平台下三种主要的可执行文件格式:a.out(assembler and link editor output 汇编器和链接编辑器的输出)、COFF(Common Object File Format 通用对象文件格式)、ELF(Executable and Linking Format 可执行和链接格式)。-可执行的二进制文件

相对可执行文件有三个重要的概念:编译(compile)、连接(link,也可称为链接、联接)、加载(load)。源程序文件被编译成目标文件,多个目标文件被连接成一个最终的可执行文件,可执行文件被加载到内存中运行。-可执行的二进制文件

浅析二进制文件与普通文件的区别

近日,在写一个遍历查找目录文件内容功能时,在使用时功能很正常,确发现了些异常。读取文件时会将一些二进制文件读取出来,搜索目标字符串。本文将详细解析如何正确使用程序区分两种文件(基于c).

文中所指的二进制文件是指可执行文件,或者图片等非文本类型文件,即Binary文件。

首先,为了文件的简单,我们手工生成两个文件,一个普通文件,一个二进制可执行文件

生成普通文件

生成可执行文件a.out

使用grep 查找hello时,两个文件输出为

grep是碰到可执行文件时会输出Binary file

文本文件是一种计算机文件,它是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。(来源百度百科)

本文定义为:文本文件是一种顺序存储了unicode编码,或者其他编码字符的文件。因为不仅可以存英文还可以存放一些表情及换行等其他字符。

将依次遍历文档,然后与所有的可能的编码中的字符进行查找比较,如果所有字符都符合在这些编码字符列表中,则当前文档即为一个文本文档。

不过这种方法的效率堪忧,有没有一种更简单的方法呢。当然有!

当我们使用十六进制的方式打开两个文件,就会发现不同了。同时对比了一张图片的十六进制

图片

在文本文件的十六进制编码同时将 unicode符号也在文本中展示出来了。也可以从文本文件的定义可以得出,非ascii不能作为检测二进制的方法。

但是通过对比三个文件的十六进制编码会发现,可执行文件与图片中包含 了很多00,即空字符,而文本文件中是不存在的。

所以初步结论是不含有空字符的文件即为二进制文件.

但是我们总不能从文件头到尾去判断吧,所以我们查看grep与diff源码会发现一段宏

所以我们取一段数据长度判断,如果是包含了空字符就是非文本类型文件,比如取1024个字节。因为二进制文件一般会有一个文件头,而文件头的数据长度大约128个字节。取1024字节是尽可能的避免头中数据写满。-可执行的二进制文件

当然以上方法只针对于utf-8, asccii ,如果是utf-16或者 utf-32 在数据中也同样会产生空字符

使用grep中同样会将其识别为binary file 所以不向下做研究了。

go build和go install的区别是什么?

go build只对main包有效,在当前目录编译生成一个可执行的二进制文件(依赖包生成的静态库文件放在$GOPATH/pkg)。

go install一般生成静态库文件放在$GOPATH/pkg目录下,文件扩展名a,如果为main包,则会在$GOPATH/bin 生成一个可执行的二进制文件。

go build

通过go build加上要编译的Go源文件名,我们即可得到一个可执行文件,默认情况下这个文件的名字为源文件名字去掉.go后缀。

$ go build hello.go

$ lshello hello.go

当然我们也 可以通过-o选项来指定其他名字:

$ go build -o mygo hello.go

$ lsmygo hello.go

如果我们在go-examples目录下直接执行go build命令,后面不带文件名,我们将得到一个与目录名同名的可执行文件:

$ go build

$ lsgo-examples hello.go

go install

与build命令相比,install命令在编译源码后还会将可执行文件或库文件安装到约定的目录下。

1、go install编译出的可执行文件以其所在目录名(DIR)命名

2、go install将可执行文件安装到与src同级别的bin目录下,bin目录由go install自动创建

3、go install将可执行文件依赖的各种package编译后,放在与src同级别的pkg目录下

BIN文件怎么打开?

如果是光盘镜像文件,可以使用UltraISO之类的软件打开,也可以转换为ISO格式,或加载到虚拟光驱里,当光盘使用。

BIN文件是一种二进制文件,通过虚拟光驱软件是可以打开BIN文件的,也有用户将系统备份为BIN文件,便于下次重装系统时进行读取。

二进制文件,其用途依系统或应用而定。一种文件格式binary的缩写。一个后缀名为".bin"的文件,只是表明它是binary格式。比如虚拟光驱文件常用".bin"作为后缀,但并不意味着所有的bin文件都是虚拟光驱文件。-可执行的二进制文件

一般来讲是机器代码,汇编语言编译后的结果(磁盘操作系统下汇编语言编译后与".com"文件相类似),用debug、WINHEX,U_EDIT等软件可以打开(通常不一定能看得懂是些什么除非学习过汇编语言)。这类 所有的文件,无论后缀名是什么,一律分为两种格式".text" 和".binary"。-可执行的二进制文件

可执行的二进制文件是什么

简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICOD

E编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么

意思(这样一个过程,可以看作是自定义编码)。

从上面可以看出文本文件基本上是定长编码的,基于字符嘛,每个字符在具体编

码中是固定的,ASCII码是8个比特的编码,UNICODE一般占16个比特。而二进制文件可看

成是变长编码的,因为是值编码嘛,多少个比特代表一个值,完全由你决定。大家可能

对BMP文件比较熟悉,就拿它举例子吧,其头部是较为固定长度的文件头畔ⅲ?字节

用来记录文件为BMP格式,接下来的8个字节用来记录文件长度,再接下来的4字节用来记

录bmp文件头的长度。。。大家可以看出来了吧,其编码是基于值的(不定长的,2、4、

8字节长的值都有),所以BMP是二进制文件。