精华内容
下载资源
问答
  • C 源程序到可执行文件的过程

    千次阅读 2016-07-07 09:27:12
    C源程序->编译预处理->编译->(优化程序->)汇编程序->链接程序->可执行文件 1.预处理 在该阶段,编译器将C源代码中的包含的头文件如stdio.h编译进来,可通过gcc 的选项 -E 进行查看 如:[root@localhost 0001]...

    C源程序->编译预处理->编译->(优化程序->)汇编程序->链接程序->可执行文件

    1.预处理

    在该阶段,编译器将C源代码中的包含的头文件如stdio.h编译进来,可通过gcc 的选项 -E 进行查看

    如:[root@localhost 0001]#gcc -E main.c -o main.i

    将main.c预处理输出 main.i 文件

    2.编译

    这个阶段中,编译器首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作。用户可以使用”-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
    选项 -S
    如:[root@localhost 0001]# gcc –S main.i –o main.s 
    将预处理输出文件main.i汇编成main.s文件。

    *3.优化程序

    -O0:无优化(默认)
    -O和-O1:使用能减少目标文件大小以及执行时间并且不会使编译时间明显增加的优化.在编译大型程序的时候会显著增加编译时内存的使用.
    -O2: 包含-O1的优化并增加了不需要在目标文件大小和执行速度上进行折衷的优化.编译器不执行循环展开以及函数内联.此选项将增加编译时间和目标文件的执行性能.
    -Os:专门优化目标文件大小,执行所有的不增加目标文件大小的-O2优化选项.并且执行专门减小目标文件大小的优化选项.
    -O3: 打开所有-O2的优化选项并且增加 -finline-functions, -funswitch-loops,-fpredictive-commoning, -fgcse-after-reload and -ftree-vectorize优化选项.
    4.汇编
    汇编阶段是把编译阶段生成的”.s”文件转成二进制目标代码.
    选项 -c
    如:[root@localhost 0001]#gcc –c main.s –o main.o
    将汇编输出文件main.s编译输出main.o文件

    5.链接
      链接就是将不同部分的代码和数据收集和组合成为一个单一文件的过程,这个文件可被加载或拷贝到存储器执行.

            在成功编译之后,就进入了链接阶段。
            无选项链接

            如:[root@localhost 0001]# gcc main.o –o main.exe
            将编译输出文件main.o链接成最终可执行文件main.elf

    ————————
      链接可以执行与编译时(源代码被翻译成机器代码时),也可以执行与加载时(在程序被加载器加载到存储器并执行时),甚至执行与运行时,由应用程序来执行.在现代系统中,链接是由链接器自动执行的.
      链接器分为:静态链接器和动态链接器两种.


    静态链接器
      静态链接器以一组可重定位目标文件和命令行参数作为输入,生成一个完全链接的可以加载和运行的可执行目标文件作为输出.

      静态链接器主要完成两个任务:
      1>符号解析:目标文件定义和引用符号.符号解析的目的在于将每个符号引用和一个符号定义联系起来.
      2>重定位:编译器和汇编器生成从地址零开始的代码和数据节.链接器通过把每个符号定义和一个存储器位置联系起来,然后修改所有对这些符号的引用,使得他们执行这个存储位置,从而重定位这些节.

    动态链接器

     动态链接方式下,函数的定义在动态链接库或共享对象的目标文件中。在编译的链接阶段,动态链接库只提供符号表和其他少量信 息用于保证所有符号引用都有定义,保证编译顺利通过。动态链接器(ld-linux.so)链接程序在运行过程中根据记录的共享对象的符号定义来动态加载共享库,然后完成重定位。在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。  

      目标文件:
      目标文件有三种形式:
      1>可重定位的目标文件:
      包含二进制代码和数据,其形式可以再编译时与其他可定位目标文件合并起来,创建一个可执行目标文件.
      2>可执行目标文件:
      包含二进制代码和数据,其形式可以被直接拷贝到存储器并执行.
      3>共享目标文件:
      一种特殊的可重定位目标文件,可以再加载或运行时,被动态地夹在到存储器并执行.
      编译器和汇编器生成可重定位目标文件(包括共享目标文件),链接器生成可执行目标文件.



    展开全文
  • 一般情况下一个Java文件代表一个类,在编译时会产生一个字节码.class文件。 但是在Java中 一个源文件中可以包含多个类,但是只能有一个public类,其他的都成为内部类,这时编译时会生成多个字节码文件。一个是那个...

    一般情况下一个Java文件代表一个类,在编译时会产生一个字节码.class文件。
    但是在Java中 一个源文件中可以包含多个类,但是只能有一个public类,其他的都成为内部类,这时编译时会生成多个字节码文件。一个是那个public类也是该源文件名对应的.class 另一个就是public类名$内部类名.class
    取决于你的java源文件中有几个类,在一个源文件中你用class关键字定义了几个类,编译的时候就会产生几个字节码文件。

    展开全文
  • 1,如果一个程序包含多个源程序文件,则需要建立一个项目文件(project file),在这个项目文件中包含多个文件(包含源文件和头文件)。项目文件是放在项目工作区中的,因此还要建立项目工作区。在编译时,系统会...

     1,如果一个程序包含多个源程序文件,则需要建立一个项目文件(project file),在这个项目文件中包含多个文件(包含源文件和头文件)。项目文件是放在项目工作区中的,因此还要建立项目工作区。在编译时,系统会分别对项目文件中的每个文件进行编译,然后将所得到的目标文件连接成为一个整体,再与系统的有关资源连接,生成一个可执行文件,最后执行这个文件。

    2,在实际操作中有两种方法:一种是由用户建立项目工作区和项目文件;另一种是用户之建立项目文件而不建立项目工作区,由系统自动建立项目工作区。

    3,由用户建立项目工作区和项目文件的情况:

          1)先编辑好同一程序中的各个原程序文件;

          2)建立一个项目工作区。方法是依次单击File->New->Workspace。

          3)建立项目文件。方法是依次单击File->New->Projects->选择相应的选项,例如可选Win32 Console Application项。然后还要选中窗口右部单选钮Add to current workspace (添加至已有工作区),表示新建的项目文件是放到刚才新建立的当前工作区中的。 然后单击OK按钮,此时会弹出一个对话框,选择An empty project 单选钮,表示新建立的是一个空白的项目。

          4)将源程序文件放到项目文件中。方法是:在visual c++ 主窗口中选择Project->Add to Project ->Files,在选择了Files命令后,在弹出的对话框中按路径找到原来写好的源文件。

          5)编译和连接项目文件。方法是在visual c++ 主窗口中选择Build->Build project1.exe。此时系统会对整个项目文件进行编译和连接。

          6)执行可执行文件。

    4,用户文件只建立项目

          1)分别编辑好同一程序中的各个原程序文件。

          2)建立一个项目文件(不必先建立项目工作区)。方法是依次选择File->New ->project ,在此对话框的右部中间默认选定了单选钮Create new workspace,这是由于用户未指定工作区,系统会自动开辟新的工作区。

          3)向此项目文件中添加内容。

          4)编译和连接项目文件;

          5)执行可执行文件。

    4,实际上,在编译每个程序时都需要一个工作区,如果用户未指定,系统会自动建立工作区,并赋予它一个默认名(此时以文件名作为工作区名)。

     

    展开全文
  • C源程序:输入当前目录下的文本文件名称,尝试打开文件,逐个字符读取文件内容并显示出来。

    C源程序:输入当前目录下的文本文件名称,尝试打开文件,逐个字符读取文件内容并显示出来。

    编辑源文件

    User@User-PC MINGW32 /d/mycode/c/krc
    $ vim k0136.c

    /* 输入当前目录下的文本文件名称,尝试打开文件,逐个字符读取文件内容并显示出来*/
    #include <stdio.h>
    #include <stdlib.h>
    #define MAXLEN 100
    int readline(char str[]);
    int main(void){
        FILE *fp;
        char ch,file[MAXLEN];
        int len;
        printf("读取当前目录下的文本文件,请输入文件名:\n");
        while((len=readline(file))>0)   {
            if((fp=fopen(file,"rt"))==NULL){
                printf("文件打开错误,请重新输入:\n");
            }else{
                while((ch=fgetc(fp))!=EOF){
                    putchar(ch);    
                }
                fclose(fp);
                printf("\n显示完毕,请输入新的文件名:\n");
            }
        }
        return 0;
    }
    int readline(char str[]){
        int i,c;
        for(i=0;i<MAXLEN-1&&(c=getchar())!=EOF&&c!='\n';++i){
            str[i]=c;
        }
        str[i]='\0';
        return i;
    }

    编译为可执行程序

    User@User-PC MINGW32 /d/mycode/c/krc
    $ gcc -o k0136 k0136.c

    运行测试

    User@User-PC MINGW32 /d/mycode/c/krc
    $ ./k0136

    读取当前目录下的文本文件,请输入文件名:
    filenot.c
    文件打开错误,请重新输入:
    hello.c
    #include <stdio.h>
    int main(void){
            printf("hello world!\n");
            printf("世界你好!\n");
            return 0;
    }
    
    显示完毕,请输入新的文件名:
    

    User@User-PC MINGW32 /d/mycode/c/krc
    $

    (全文完)

    展开全文
  • 源程序怎么变成可执行文件

    千次阅读 2016-06-15 23:11:05
    目标文件中所存放的也就是与源程序等效的目标的机器语言代码。   目标文件由段组成。通常一个目标文件中至少有两个段:   代码段   该段中所包含的主要是程序的指令。该段一般是可读和可...
  • 编写一个程序,读取一个Python源程序文件source.py,将文件中所有除保留字外的小写字母换成大写字母。生成后的文件要能够被Python解释器正确执行。 我不知道还有什么其他方法可以从列表中把单词逐个分离出来 所以...
  • 将Python源程序(.py)转换为可执行文件(.exe)

    万次阅读 多人点赞 2019-05-19 10:41:17
    由于Python程序的执行依赖于其环境,不能在操作系统下直接运行,因此在某些情况下需要将将Python源程序(.py文件)转换为可执行文件(.exe文件),这篇文章就来告诉大家如何将.py文件打包成.exe文件。 方法是安装一...
  • 源程序 test.c第一种 ,编译 gcc -c test.c -o test.o 连接 gcc -o test test.o第二种。 编译连接 gcc -o test test.c运行 ./test...
  • 1.打开一个文本编辑器,键入代码 2.保存文件为name.cpp,name的值一般根据该代码的意义取 3.打开命令提示符,进入保存文件所在的目录 4.键入'g++ name.cpp',输入回车编译...5.键入a.out运行程序 6.在屏幕上显示结果
  • 将PB的源程序打包成可安装文件

    千次阅读 2008-09-06 19:41:00
    1,建立工程对象 New - Project -- Application 如... 图像不全 可参考 相册中的图片点击 save 运行 pb 系统 专门 的安装打包工具软件 PowerBuilder RunTime Packager (不在pb开发平台里,在XP系统程序Sybase/powe
  • 1、编辑器:就是我们通常写代码的编辑工具,像notepad++ 等编辑工具,我们通过这类工具编辑我们想写的代码,所形成的文件称之为源文件; 2、预处理器:主要负责文本的替换、宏展开、删除注释等一些简单的工作,经过...
  • GDB调试程序6--查看源程序

    万次阅读 2010-10-12 13:52:00
    查看源程序一、显示源代码 GDB 可以打印出所调试程序的源代码,当然,在程序编译时一定要加上-g的参数,把源程序信息编译到执行文件中。不然就看不到源程序了。当程序停下来以后, GDB会报告程序停在了那个文件的第...
  • C++中建立代码工程时,通常包括三个部分:头文件,函数代码文件,主程序源代码(即main()函数,可以调用函数代码,完成程序的整体流程与功能)。 头文件(#include)常包含的内容: 函数原型 eg:void a...
  • vc 打印图片源程序

    热门讨论 2009-07-24 20:53:32
    使用vc开发的可以实现打印.bmp的图片文件源程序,做的比较简单。
  • 关于源程序到可执行程序的过程

    千次阅读 2016-04-02 13:43:18
    源程序,是指未经编译的,按照一定的程序设计语言规范书写的,人类可读的文本文件,我们通常理解为源程序就是我们所写好的代码。 可执行程序,我们常说的.exe程序,可以执行程序,完成计算机功能。在C语言中,.c...
  • 对初学使用dotlucent作站...利用dotlucene为网站做的索引文件的应用程序。 数据库是SQL Server,项目是用VS.NET2008开发的。 应用程序界面可以配置数据库链接,生成报告,定时执行增量索引,对单条索引进行更新操作。
  • 源程序、目标程序、可执行程序之间的关系

    万次阅读 多人点赞 2015-10-16 13:37:01
    1源程序:程序可以用高级语言或汇编语言编写,用高级语言或汇编语言编写的程序称 为源程序。C语言源程序的扩展名为“.c”。 源程序不能直接在计算机上执行,需要用“编译程序”将源程序编译为二进制形式的代码...
  • 当我们写好一个C程序的时候,仅仅是一个.c的源程序,而我们运行完成之后就是一个.exe的可执行程序了,在这个过程中都发生了什么呢? (1).c的源程序会经过翻译环境和运行环境两个大的步骤。 其中,翻译环境包含...
  • 基于vc的数字图像处理算法源程序

    热门讨论 2009-05-12 15:59:38
    源程序说明 1) 一个以BMP文件操作为基础的图像处理头文件,以下有不少源代码会用到它。 loadbmp.h 2) 对图像进行二值化处理的源代码,编译后的可执行文件须带参数运行。 bivalue.cpp使用方法:bivalue BMP文件名 ...
  • 建立工程的步骤。 1 首先,打开VC++6.0软件,点击菜单栏上的“File(文件)”-->"new(新建)",如下图所示: 弹出一个“new (新建)”窗口,点击“project(工程)”选项卡,然后选中“Win32 C
  • 能将高级语言编写的源程序转换为目标程序的是什么? A)链接程序 B)解释程序 C)编译程序 D)编辑程序 答案:D   把源程序转换为目标程序的过程叫编译。所以能将高级语言编写的源程序转换为目标程序的是相应的...
  • MFC调用C源程序

    千次阅读 2007-08-16 23:29:00
    最近一个项目中,需要用MFC调用C源程序,经过查找和实验。具体做法如下:1.C程序文件文件名必须改为*.cpp;2.C程序中提供给其它类(别的*.cpp文件)调用的函数必须在*.h文件中声明;3. 在*.h文件和*.cpp(调用的C...
  • 软著--源程序前后40页

    千次阅读 2018-05-10 18:16:53
    一、脚本会把对应的文件统一拷贝到Copyright.txt文件 二、全选复制到doc文档 三、调整好字体、格式。在40页的位置插入下一页分节符,倒数第40页的位置也插一个。光标置于这两个分节符中间的某一个部分,工具栏:...
  • 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables)。 简言之,源文件生成可执行文件...
  • 代码到可执行文件的过程
  • 基于STM32的水温自动PID控制源程序,完整工程文件
  • 【Keil】Keil5添加源程序和头文件

    千次阅读 2019-09-24 04:14:47
    xxx.c就是源程序 xxx.h就是头文件 【源程序添加方法】 双击文件夹,例如图片上的Source,跳出弹窗,选择需要添加的源程序即可 【添加头文件的方法】 1.首先点击图片红框处,或是在文件夹test点击右键,再...
  • 源程序生成控制流图和du-path

    千次阅读 热门讨论 2014-04-08 10:49:06
    最近上《代码分析技术》这个课,老师让写一个程序,you
  • 1、理解库函数 库函数有头文件和库文件(so 或者 a)的集合 1)头文件的默认目录 /usr/include 2)库文件的默认目录 /user/lib ... 他们之间的差距在于程序执行时所需代码是运行时加载的,海山编译
  • 具体内容请看博文,这是完整的可以传输文件程序代码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,346,749
精华内容 538,699
关键字:

怎么建立源程序文件