精华内容
下载资源
问答
  • 2014-06-21 10:36:51

    ====http://zhidao.baidu.com/link?url=LFjvNsyqc0MN99fKpiRP7H8P4MkCfsOLm7qbVUFZJaFgnr6q69pcbMfE-zI6UoFYhWontcCImQ29JVsItDjqT35yX2idlUlLgSkzx5ZKym7




    我用的是Ubuntu 12.04 LTS版本, JDK 都安装成功,输入java -version 都是正确输出java 版本。就是eclipse无法运行,双击 eclipse.run 提示 没有为可执行文件 文件类型安装应用程序。<br style="font-family: 'Microsoft Yahei', 'Microsoft Yahei' !important; text-shadow: rgb(153, 153, 153) 0.01em 0.01em 0.01em !important;" />各位朋友指点指点,我也是刚刚学习 linux 。
    举报| 2013-10-23 10:17 提问者采纳
      ./run应该是安装包吧!你试试通过终端,在该安装文件路径下, sudo ./eclipse.run 看能不能运行。也可以试试用软件中心打开该文件。
    追问
    sudo ./eclipse.run 也不能运行
    回答
    如果确定你的文件没有问题,那么试试更改文件访问权限。
    终端内进入文件所在路径
    chmod u+x 文件名.run
    sudo ./文件名.run 或者试试 sudo bash ./文件名.run
    提问者评价
    谢谢!
    更多相关内容
  • C语言 目标文件可执行文件(ELF文件

    万次阅读 多人点赞 2019-05-15 18:55:15
    1.C语言创建程序 1.1C语言创建(分为4个步骤) 编辑 ...编译器的输出结果成为目标代码,存放它们的文件称为目标文件。扩展名为.o或者.obj。 (该部分编译是指汇编器编译汇编语言或者编译器编译...

    转自:https://www.jianshu.com/p/7c609b70acbd

    1.C语言创建程序

    1.1C语言创建(分为4个步骤)
    • 编辑
    • 编译
    • 链接
    • 执行

    编辑:就是创建和修改C程序的源代码-我们编写的程序称为源代码。
    编译:就是将源代码转换为机器语言。编译器的输出结果成为目标代码,存放它们的文件称为目标文件。扩展名为.o或者.obj。
    (该部分编译是指汇编器编译汇编语言或者编译器编译高级语言)
    链接:链接器将源代码由编译器产生的各种模块组合起来,再从C语言提供的程序库中添加必要的代码模块,将它们组成一个可执行的文件。在windows下扩展名为.exe,Unix下无扩展名。
    执行:运行程序。

    C.png
    1.2什么是源代码,目标文件,可执行文件。

    源代码 ——源文件就是存放程序代码的文件。通常我们编辑代码的文件就是源文件。

    • 源代码相对目标代码和可执行代码而言的。
    • 源代码就是用汇编语言和高级语言写出来的地代码。

    目标文件——指源代码经过编译程序产生的能被cpu直接识别二进制代码。

    • 目标代码指计算机科学中编译器或汇编器处理源代码后所生成的代码,它一般由机器代码或接近于机器语言的代码组成。
    • 目标文件包括着机器代码(可直接被计算机中央处理器履行)和代码在运行时使用的数据,如重定位信息,如用于链接或调试的程序符号(变量和函数的名字),另外还包括其他调试信息。
    gcc -c main.c 
    编译main.c ,生成目标文件main.o,但不进行link. 
    gcc -o main.o
    链接成可执行文件main

    可执行文件——可执行代码就是将目标代码连接后形成的可执行文件,当然也是二进制的。 连接程序系统库文件连接就生成可执行文件。

    例如:*.obj是程序编译之后生成的目标文件,连接程序再将这个文件与系统库文件连接就生成可执行文件
    
    1.3链接器的作用
    Screen Shot 2017-06-12 at 4.32.06 PM.png

    根据上面的图,我们可以看到链接器还额外链接了2个部分。

    目标代码文件中所缺少的第一个元素是一种叫做启动代码(Start-up code)的东西,此代码相当于您的程序和操作系统之间的接口。例如你可以在dos 或Linux下运行一个 IBM PC 兼容机,在两种情况中硬件是相同的,所以都会使用同样的目标代码,但是 DOS与Linux要使用不用的启动代码,因为这两种系统处理程序的方式不同的。

    所缺少的第二个元素是库例程的代码。几乎所有C程序都利用标准库中所包含的例程(称为函数)。例如,程序中的函数printf()。目标代码文件不包含这一函数的指令。实际代码存储在另一个称为“库”的文件中,库文件中包含许多函数的目标代码。

    链接器的作用是将这3个元素(目标代码、系统的标准启动代码和库代码)结合在一起,并将他们存放在单个文件,即可执行文件中。对库代码来说,链接器只从库中提取您所使用的函数所需的代码。

    可以得出结论:目标文件和可执行文件都是由机器语言指令组成的。但目标文件只包含您所编写的代码转换成的机器语言,而可执行文件还包含您所使用的库例程以及启动代码。

    下面这幅图能大致说明一下链接的情况。


    1.png

    这是一个main.o目标代码,内部有main,foo,bar三个函数。

    U main表示main这个符号在crtl1.o中用到了,但是没有定义。因此需要main.o提供定义并和crtl1.o链接在一起。main整个程序的入口实际上是_crtl1.o中的 _start,它做了一些初始化工作(启动历程),然后调用C代码中提供的main.c函数。libc是运行时候动态链接libc共享库(库中包含常用的函数)。

    所以程序的入口点其实是_start,main函数实际上是被_start调用。

    1.4gcc命令图
    QQ截图20170613151139.png

    2.ELF文件(该部分分析目标文件和可执行文件的,涉及部分汇编指令)

    ELF文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,它有三种不同的类型:

    • 可重定位的目标文件
    • 可执行文件
    • 共享库

    ELF文件格式提供了两种不同的视角,在汇编器和链接器看来,ELF文件是由Section HeaderTable描述的一系列Section的集合,而执行一个ELF文件时,在加载器(Loader)看来它是 由Program Header Table描述的一系列Segment的集合。如下图所示。


    Screen Shot 2017-06-10 at 10.01.54 PM.png

    左边是从汇编器和链接器的视角来看这个文件,开头的ELF Header描述了体系结构和操作系统 等基本信息,并指出Section Header Table和Program Header Table在文件中的什么位 置,Program Header Table在汇编和链接过程中没有用到,所以是可有可无的,Section Header Table中保存了所有Section的描述信息。右边是从加载器的视角来看这个文件,开头 是ELF Header,Program Header Table中保存了所有Segment的描述信息,Section Header Table在加载过程中没有用到,所以是可有可无的。注意Section Header Table和ProgramHeader Table并不是一定要位于文件开头和结尾的,其位置由ELF Header指出,上图这么画只是为了清晰。

    目标文件需要链接器做进一步处理,所以一定有Section Header Table;可执行文件需要加载运行,所以一定有Program Header Table;而共享库既要加载运行,又要在加载时做动态链接, 所以既有Section Header Table又有Program Header Table。

    • section:C语言内存中的.text,.data,.bss.....
    • Segment:是指在程序运行时加载到内存的具有相同属性的区域,由一个或多个Section组成,比如有两个Section都要求加载到内存后可读可写,就属于同一个Segment。有些Section只对汇编器和链接器有意义,在运行时用不到,也不需要加载到内 存,那么就不属于任何Segment 。

    2.1重定位目标文件

    在进行该部分之前,我们先查看一下网上的部分重定位目标文件的资料。

    资料一:

    汇编器所产生的目标文件至少包括三个区,即文本区(text),数据区(data)和bss区。文本区一般包括程序的代码和常量,数据区通常存放全局变量等内容,bss区用于存放未初始化的变量或作为公共变量存储空间。在一个目标文件中,其text区从地址0开始,随后是data区,再后面是bss区。而要运行程序,必须装载到内存中,所以这些区的地址需要在内存中重新安排,也就是重定位。

    资料二:

    编译器编译后产生的目标文件是可重定位的程序模块,并不能直接运行,链接就是把目标文件和其他分别进行编译生成的程序模块(如果有的话)及系统提供的标准库函数连接在一起,生成可运行的可执行文件的过程。
    重定位是链接器在完成符号解析后(知道了各个输入模块的代码段和数据段的大小)的一个步骤,其作用顾名思义就是重新定位,确定比如指令,全局变量等在运行时的存储器地址。

    资料三:

    比如说两个编译后的可重定位目标文件obj1.o和obj2.o
    在obj1.o里面定义了一个全局变量glob(在obj1里面记录了glob相对于该文件数据段的相对地址), 而obj2.0里面又引用了这个全局变量glob。
    链接的重定位就是要确定在链接后的可执行程序中glob的地址,而不是相对于obj1的地址,从而使obj2也能通过地址调用glob。
    当然重定位并不只是全局变量,还包括外部函数,指令等运行时地址的确定

    资料四:

    当你在程序中写上一个全局变量或者是一个函数时,这个定位过程会经历几个阶段:
    1.在这个目标文件中的相对定位,一个目标文件中对此文件中的所有函数,变量进行符号描述,比如一个变量A,它所占的相对地址是多少?是全局的?或者是静态的,或者是外部的??
    2.在连接多个目标成一个可执行文件时,会再次对这个变量进行重定位,也就是在这个可执行文件中进行对此变量进行描述,同目标文件中的描述差不多,只不过此变量不再有外部,内部之分,都成了本地变量,并且会将所有全局变量存放在一定的逻辑地址中,这是通过连接脚本文件与各个目标文件中的相对地址共同决定的
    3.最终的操作系统加载这个可执行文件时,会对这些变量与函数地址再次进行重定位,其方式就是首先分析这个可执行文件中的不同段,读出相应的描述表,然后通过逻辑地址与物理地址进行映射出,最终就将可执行的二进制码加进了真实的物理内存了,关于分析可执行文件格式与物理地址的转换,不同的CPU与操作系统的实现方式会有不同之处

    接下来我们开始实践部分,首先写一个求一组数的最大值的汇编程序max.s。

    Screen Shot 2017-06-11 at 3.42.29 PM.png

    现在有一个max.o目标文件,我们用readlf工具读取其ELF Header和Section Header Table


    Screen Shot 2017-06-10 at 10.20.59 PM.png

    ELF Header中描述了操作系统是UNIX,体系结构是80386。Section Header Table中有8个Section Header,从文件地址200
    (0xc8)开始,每个Section Header占40字节,共320字节,到文件地址0x207结束。这个目标文件没有Program Header。文件地址是这样定义的:文件开头第一个字节的地址是0,然后每个字节占一个地址。

    QQ图片20170611130217.png

    从Section Header中读出各Section的描述信息。
    Addr是这些段加载到内存中的地址(程序中的地址都是虚拟地址),加载地址要在链接时填写,现在空缺,所以是全0。
    OffSize两列指出了各Section的文件地址,比如.data段从文件地址0x60开始,一共0x38个字节,回去翻一下程序,.data段定义了14个4字节的整数,一共是56个字节,也就是0x38。

    根据以上信息可以描绘出整个目标文件的布局。

    QQ图片20170611132839.png

    ** Section Header Table**:读出各Section的描述信息。
    .shstrtab:保存着各Section的名字,比如.text,.data.....。
    .strtab:保存着程序中用到的符号的名字.比如汇编程序的start_loop:和loop_exit符号。(对应的就是for循环)。
    **.data **:保存程序中已初始化的全局变量和静态变量以及字符串常量。
    .bss:存放程序中未初始化的全局变量和静态变量。
    .text:存放程序执行代码。
    .rel.text:告诉链接器指令中的哪些地方需要做重定位。
    下节分析。

    Screen Shot 2017-06-11 at 2.40.30 PM.png

    我们看一下.text段内容


    Screen Shot 2017-06-11 at 3.44.53 PM.png

    ![Uploading QQ截图20170613113520_952796.png . . .]

    text段代码中,一些跳转指令和内存访问指令中的地址都是符号的相对地址,下一步链接器要修改这些指令,把其中的地址都改成加载时的内存地址,这些指令才能正确执行。

    2.2可执行文件

    现在分析可执行文件max。


    Screen Shot 2017-06-11 at 2.45.59 PM.png
    Screen Shot 2017-06-11 at 2.47.07 PM.png
    Screen Shot 2017-06-11 at 2.47.43 PM.png
    Screen Shot 2017-06-11 at 2.48.05 PM.png

    在ELF Header中,Type改成了EXEC,由目标文件变成可执行文件了多了两个Program Header,少了两个Section Header。

    在Section Header Table中,.text和.data的加载地址分别改成了0x0804 8074和0x0804 90a0。.bss段没有用到,所以被删掉了。.rel.text段就是用于链接过程的,链接完了就没用 了,所以也删掉了。

    多出来的Program Header Table描述了两个Segment的信息。.text段和前面的ELF Header、Program Header Table一起组成一个Segment(FileSiz指出总长度 是0x9e),.data段组成另一个Segment(总长度是0x38)。VirtAddr列指出第一 个Segment加载到虚拟地址0x0804 8000,第二个Segment加载到地址0x0804 90a0。Flg列指出第一个Segment的访问权限是可读 可执行,第二个Segment的访问权限是可读可写。

    Screen Shot 2017-06-11 at 2.54.13 PM.png

    原来目标文件符号表中的Value都是相对地址,现在都改成绝对地址了。

    我们查看一下.txt段内容。


    Screen Shot 2017-06-11 at 3.32.25 PM.png
    现在我们对比一下目标文件和可执行文件的不同。

    目标文件.text和.data段地址


    QQ截图20170613113520.png

    可执行文件.text和.data段地址


    QQ截图20170613113500.png

    目标文件中跳转指令


    Screen Shot 2017-06-11 at 3.35.56 PM.png

    可执行文件中跳转指令


    Screen Shot 2017-06-11 at 3.36.18 PM.png

    目标文件中内存访问指令


    Screen Shot 2017-06-11 at 3.37.08 PM.png

    可执行文件中内存访问指令


    • 可以看到指令中的相对地址都改成绝对地址了。
    • 结合上2部分分析,我们可以看到。
    • .text和.data段代码加载到内存中的地址由空缺0变成了具体地址。
    • .text段代码中一些跳转指令和内存访问指令中的地址由相对地址改成加载时的内存地址,
    • .data段代码也由相对地址改为绝对地址。

    3.静态库和共享库

    :有时候需要把一组代码编译成一个库,这个库在很多项目中都要用到,例如libc就是这样一个库,我们在不同的程序中都会用到libc中的库函数(例如printf)。

    共享库和静态库的区别:在链接libc共享库时只是指定了动态链接器和该程序所需要的库文件,并没有真的做链接,可执行文件调用的libc库函数仍然是未定义符号,要在运行时做动态链接。而在链接静态库时,链接器会把静态库中的目标文件取出来和可执行文件真正链接在一起。

    • 静态库链接后,指令由相对地址变为绝对地址,各段的加载地址定死了。
    • 共享库链接后,指令仍是相对地址,共享库各段的加载地址并没有定死,可以加载到任意位置。

    静态库好处:静态库中存在很多部分,链接器可以从静态库中只取出需要的部分来做链接 (比如main.c需要stach.c其中的一个函数,而stach.c中有4个函数,则打包库后,只会链接用到那个函数)。另一个好处就是使用静态库只需写一个库文件名,而不需要写一长串目标文件名。

    该部分是参照《一站式学习C编程》所做的总结,理解程度比较初步。

    展开全文
  • ELF可执行文件的理解

    千次阅读 2019-08-06 17:23:15
    ELF可执行文件的理解 ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(object files)中都放了什么东西、以及都以什么样的格式去放这些东西。ELF是构成众多xNIX系统的基础...

    ELF可执行文件的理解

           ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(object files)中都放了什么东西、以及都以什么样的格式去放这些东西。ELF是构成众多xNIX系统的基础之一。

    1 对象文件的三个种类

    1.1 可重定位的对象文件(Relocatable object file)

           这是由汇编器汇编生成的.o文件。链接器(link editor)拿一个或一些Relocatable object files作为输入,经链接处理后,生成一个可执行的对象文件(Executable object file)或者一个可被共享的对象文件(Shared object file)。可以使用ar工具将众多的.o可重定位的对象文件归档成.a静态库文件。

    1.2 可执行的对象文件(Executable object file)

           文本编辑器vi、调试用的工具gdb、播放MP3歌曲的软件mplayer等等都是Executable object file,另外一种可执行的脚本(如shell脚本),不是可执行的对象文件,只是文本文件,但是执行这些脚本所用的解释器就是executable object file,比如bash shell程序。

    1.3 可被共享的对象文件(Shared object file)

           这些就是所谓的动态库文件,也即.so文件。如果拿前面的静态库来生成可执行程序,那每个生成的可执行程序中都会有一份库代码的拷贝。动态库在发挥作用的过程中,必须经过两个步骤:

    1. 链接编辑器(link editor)拿它和其他Relocatable object file以及其他shared object file作为输入,经链接处理后,生成另外的shared object file或者executable file。
    2. 在运行时,动态链接器(dynamic linker)拿它和一个executable file以及另外一些shared object file来一起处理,在Linux系统里面创建一个进程映像。

    2 section

           在ELF对象文件的最前面有一个ELF头文件,里面记载了所适用的处理器、对象文件类型等各种信息。下图描述了ELF对象文件的基本组成:

     

           为什么左右两个类似的图来说明ELF的组成格式?这是因为ELF格式需要使用在两种场合:(1)组成不同的可重定位文件,以参与可执行文件或者可被共享的对象文件的连接构建;(2)组成可执行文件或者可被共享的对象文件,以在运行时内存中进程映像的构建。

           Section是在ELF文件里头,用以装载内容数据的最小容器,是被链接器使用的。在ELF文件里面,每一个section内都装在了性质属性都一样的内容,比方:

    1) .text section 里装载了可执行代码;

    2) .data section 里面装载了被初始化的数据;

    3) .bss section 里面装载了未被初始化的数据;

    4) 以 .rec 打头的 sections 里面装载了重定位条目;

    5) .symtab 或者 .dynsym section 里面装载了符号信息;

    6) .strtab 或者 .dynstr section 里面装载了字符串信息;

    7) 其他还有为满足不同目的所设置的section,比方满足调试的目的、满足动态链接与加载的目的等等。

           一个ELF文件中到底有哪些具体的section,由包含在这个ELF文件的section head table(SHT)决定。在SHT中,针对每一个section,都设置一个条目,用来描述对应的这个section,其内容主要包括该section的名称、类型、大小以及在整个ELF文件中的字节偏移位置等等。

           链接器在链接可执行文件或动态库的过程中,它会把来自不同可重定位对象文件中的相同名称的section合并起来构成同名的section。接着,它又会把带着相同属性(比方都是只读并可加载的)的section都合并成所谓segment(段)。Segment作为链接器的输出,常被称为输出section。开发者可以控制哪些不同.o文件的section来最后合并构成不同名称的segment。

           一个单独的 segment 通常会包含几个不同的 sections,比方一个可被加载的、只读的segment 通常就会包括可执行代码section .text、只读的数据section .rodata以及给动态链接器使用的符号section .dymsym等等。section 是被链接器使用的,但是 segments 是被加载器所使用的。加载器会将所需要的 segment 加载到内存空间中运行。和用 sections header table 来指定一个可重定位文件中到底有哪些 sections 一样。在一个可执行文件或者动态库中,也需要有一种信息结构来指出包含有哪些 segments。这种信息结构就是 program header table,如ELF对象文件格式中右边的 execute view 所示的那样。

           为什么会有这样的一个segment?这是因为我们写的应用程序通常都需要使用动态链接库.so。程序在Linux里面是怎样运行起来的?当在shell中敲入一个命令要执行时,内核会帮我们创建一个新的进程,它再往这个新进程的进程空间里面加载进可执行程序的代码段和数据段后,也会加载进动态链接器(在Linux里面通常就是 /lib/ld-linux.so 符号链接所指向的那个程序,它本身就是一个动态库)的代码段和数据。在这之后,内核将控制传递给动态链接库里面的代码。动态链接器接下来负责加载该命令应用程序所需要使用的各种动态库。加载完毕,动态链接器才将控制传递给应用程序的main函数。这样应用程序才得以运行。

           头文件中最重要的三个segment是:代码段、数据段和堆栈段。

    展开全文
  • C语言生成可执行文件的过程

    千次阅读 多人点赞 2021-02-15 11:07:05
    通过 gcc -E main.c -o main.i 执行c语言的预编译过程,生成main.o文件 让我们怀着敬畏的心情瞧一瞧生成的main.o文件是啥样子 (因为篇幅原因,上面截图只展示原文件的几十分之一的代码) 可以发现最下面是我们的源...

    今天用gcc编译器为大家演示一下c语言的编译过程

    首先,我们将贴上我们朴实无华的源代码
    B99sPu.md.png

    1. 预编译过程

    由.c --生成–> .o文件
    通过 gcc -E main.c -o main.i 执行c语言的预编译过程,生成main.o文件
    B99tHv.md.png
    让我们怀着敬畏的心情瞧一瞧生成的main.o文件是啥样子
    B994DE.md.png
    (因为篇幅原因,上面截图只展示原文件的几十分之一的代码)
    可以发现最下面是我们的源代码部分,也就是main函数,那么,main函数上面的几千行代码都是什么东西呢?
    其实啊,那是我们的#include <stdio.h>, 即是我们定义的宏展开的样子
    千万别小看这个文件,它可是可以直接运行的

    如果有神探的话,可以发现,我上面那个main函数是有语法错误的
    我的main函数是这样的

     int int mian(){
    	printf(".....");
    	return 0
     }
    

    聪明的你们可以得出一个什么结论呢?
    在预编译过程中是不会进行语法检查的,只会单纯的将我们定义的宏进行展开

    编译

    由.i文件生成.s汇编文件

    gcc -s main.i -o main.s
    这一步我赶紧偷偷将语法改正过来,因为有了语法检查喽(其实也是必然的,因为有语法错误怎么能编译为正确的汇编代码呢)

    这个汇编文件包括我们下一步生成的目标文件是不可以直接运行的,因为它里面的函数调用等等也就是符号引用,并不知道此时他的真正的文件地址在哪里

    在这里插入图片描述

    生成目标文件

    gcc -c main.s -o main.o

    我们采用file命令查看一下这个目标文件
    在这里插入图片描述
    发现这个文件是Mach-O类型的,什么是Mach-O呢?
    虽然macos拥有着unix上的很多特性,但是并没有采用unix上可执行文件elf(excutable link format)格式, 它采用了Mach-O作为它的可执行文件的格式, 哦,所以说,它其实就是一个mac平台上的可执行文件, 类似于unix的elf和win的PE
    但是呢,它还没有进行链接,例如我们main函数中引用的printf的真正内存地址它还是没有的,所以,并不是一个真正意义上的可执行文件

    生成可执行文件

    激动。。。终于到了最后一步了
    gcc -v main.o -o main 生成我们的可执行文件
    B9NNpn.md.png

    我们双击一下这个文件,就可以发现这个文件可以正常运行了,是不是非常四高一呢?

    展开全文
  • go中生成可执行文件

    千次阅读 2020-11-01 12:03:02
    这里介绍对go项目进行打包编译生成可执行文件,其实包含参数的传递、目标可执行文件类型、打包对象。 二、使用 go项目的编译命令为go build,编译包,生成可执行文件(包含main包),默认生成位置在当前目录下。 (注意...
  • 正常的情况下,我们双击安装在电脑的各种软件就可以直接运行了,我们安装在电脑上的软件也就是.exe文件可执行的应用程序)。 如果我们双击无法打开,一般来说,就是你的注册表里面的命令被修改了,注册表是什么,...
  • linux下二进制可执行文件分析

    千次阅读 2020-11-29 14:24:58
    一 背景也许大家都遇到过这种场景,就是有二进制代码,比如深度分析下此文件到底是什么格式的图片等,这篇文章就记录我分析下二进制可执行文件的过程,已经自己读写二进制文件的一些坑。分析的二进...
  • ELF文件、目标文件、可执行文件的关系 目标文件是源代码经过编译但未进行链接的那些中间文件,在linux中的.o文件,它跟可执行文件的内容与...ELF文件类型 说明 实例 可重定位文件(Relocatable File) ...
  • 在WindowsXP系统中不同的文件会以不同的图标显示从打开方式看文件分为可执行文件不可执行文件两种类型 >可执行文件指可以自;己运行文件又称可执行程序其扩展名主要有.等用鼠标双击可执行文件它便会自己运行例如...
  • Python打包前言正题安装pywin...可执行文件需要系统安装pycharm等各语言的IDE便可使用 今天,和大家分享一种比较简单的将.py文件打包成.exe文件方式 以下内容,均为本人亲试,pycharm3.7版本 正题 安装pywin32 ...
  • linux的可执行文件是什么后缀

    千次阅读 2020-03-05 09:32:26
    一般没有后缀,linux一般可以自动识别文件类型,有很多类型都不用加后缀。...Linux下的后缀名并没用windows下那么有用,Linux根据扩展名判断文件类型,而是根据文件的内容来判断。所以扩展名的作...
  • ELF 文件规范   ELF(Executable and Linking Format)是一个二进制文件规范。...  现在流行的可执行文件格式 (Executable File Format),主要是 Windows 下的 PE(Portable Executable)和 Linux 的 EL...
  • 下面哪种类型文件可以在Java虚拟机中运行( ).答:.class舌尖前送气清塞擦音是答:c中国大学MOOC: 已知 [X]原=10101100,[Y]补=11000110, 求 [X+Y]补=______。答:10011010什么是我们党一切行动的根本出发点和...
  • 由于之前老师给的任务所以研究了一段时间怎么把matlab中的程序打包成可执行文件放在没有matlab的计算机上面运行,这篇文章也算记录一下这段时间碰的壁吧,注意:我们这个方法虽然需要目标机器安装matlab但是需要...
  • Java程序生成可执行的exe文件 详细图文教程

    千次阅读 多人点赞 2022-01-19 15:50:11
    在目标系统上,生成的可执行文件按照以下可配置顺序搜索JRE或JDK。 可以将默认的三个搜索方式删除,添加jre读取目录,然后将jre文件放在和.exe应用同级目录,这样可以需要装jdk了。 7.配置启动画面 这里直接下...
  • Linux操作系统文件类型有哪几种?

    万次阅读 2018-07-30 22:10:13
    Linux文件类型常见的有: 普通文件、目录文件、字符设备文件和块设备文件、符号链接文件等,现在我们进行一个简要的说明。 1. 普通文件  我们用 ls -lh 来查看某个文件的属性,可以看到有类似-rwxrwxrwx,值得...
  • linux 查找可执行文件

    万次阅读 2018-03-23 10:33:31
    转自:https://www.cnblogs.com/binyue/p/4707948.htmlLinux下的可执行文件Linux下如何查找可执行文件,作为一个Linux小菜...Linux下能简单根据文件后缀判断是否可执行。linux下判断一个文件是否可执行,关键看是...
  • ubuntu下可执行文件的后缀

    千次阅读 2020-05-23 11:43:27
    可执行文件没有扩展名,Linux根据扩展名判断文件类型,而是根据文件的内容来判断。所以扩展名的作用是帮助人来识别文件,对于Linux系统本身来说没有什么用处。 .sh结尾表示是shell脚本文件,但是以.sh结尾的...
  • linux可执行文件格式

    万次阅读 2017-05-24 23:27:05
    1. 可执行文件的任务: ...可执行文件运行: 可执行文件被加载(load)到内存中执行。 2. a.out assembler and link editor output汇编器和链接编辑器的输出格式(简述)a.out 是一种古老的文件格式,简单,紧凑,
  • Unix文件类型

    千次阅读 2017-08-12 12:49:54
    UNIX系统的大多数文件是普通文件或目录,但是也有另外一些文件类型文件类型包括如下几种。(1)普通文件(regular file).这是最常用的文件类型,这种文件包含了某种形式的数据。至于这种数据是文本还是二进制数据,...
  • 源文件和头文件被预处理成一个.i文件、(-E表示只进行预处理) g++ -E hello.cpp -o hello.i -E:意味着只执行到预编译,直接输出预编译结果。 预处理过程主要处理那些源文件中的以“#”开始的预编译指令。包括#...
  • Linux文件类型

    千次阅读 2022-03-23 19:32:47
    Linux文件类型及目录结构 /(根目录) Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入"/home其实是在告诉电脑,先从/(根目录)开始,再进入到home目录 /home 每个用户都有...
  • C:\Program' 不是内部或外部命令,也不是可运行的程序 或批处理文件 原因是Program Files中间有空格,导致了该路径被作为一条命令被执行了,解决方法有如下三种: 1.给Program Files加上双引号,即: C:\“Program ...
  • gcc编译生成可执行文件的过程中发生了什么

    千次阅读 多人点赞 2019-04-15 11:46:05
    一直好奇程序的编译过程到底做了哪些工作,后来学会在Ubuntu上使用gcc编译程序,知道了生成可执行文件需要分为预编译、编译、汇编和链接4个步骤,逐渐了解了其中的细节,但是过一段时间之后总是记太清楚了,所以...
  • 用链接器把多个目标程序文件、操作系统的启动代码、库函数的目标代码连接起来,形成可执行程序文件 (1)中央处理器,主要功能是解释计算机的指令和处理计算机软件中的数据 (2)计算机的任何处理都要经过cpu,所以...
  • 01.Matlab文件类型

    千次阅读 2020-07-19 19:32:08
    mex文件可执行文件,可脱离matlab应用环境来执行 fig文件:图像文件 mdl文件:模型,贴图,所有动作,以及脚本等文件 sxl文件:simulink仿真扩展文件 mat文件:标准数据格式文件 m文件 使用命令edit来建立脚本 ...
  • ret表示返回的可执行文件的返回值。 2、subprocess.Popen() import subprocess proc = subprocess.Popen('cmd', shell=True) proc.communicate() ret = proc.returncode or: import subprocess proc = subprocess....
  • -- 常用文件扩展名解释 A 对象代码库文件 AAM Authorware shocked文件 AAS Authorware shocked包 ABF Adobe二进制屏幕字体 ABK CorelDRAW自动备份文件 ABS 该类文件有时用于指示一个摘要(就像在一篇有关科学方面的...
  • Linux 中.exe文件为什么执行

    千次阅读 2020-04-02 20:53:51
    解释exe文件为什么能在Linux系统中执行及Linux中权限介绍
  • C++源代码如何生成可执行文件

    万次阅读 2017-09-01 16:08:49
    先看一段最简单的代码: ...如何把上面的代码转换成可执行的代码呢,通常我们可以用gcc hello.c 在同样的路径下得到一个a.out的可执行文件。 其实gcc 编译链接一个可执行文件分为4个步骤:  1 预处理

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,029,368
精华内容 811,747
关键字:

不可执行文件类型