精华内容
下载资源
问答
  • 03-C语言-程序编译

    2020-04-29 09:29:47
    程序的编译 一、GCC编译器 gcc(GNU Compiler)是GNU推出的多平台编译器,可以将c、c++源程序编译链接成可执行文件。 支持后缀: .c c语言源代码 ...C代码编译成可执行程序经过4步: 预处理:宏定...

    程序的编译

    一、GCC编译器

    gcc(GNU Compiler)是GNU推出的多平台编译器,可以将c、c++源程序编译链接成可执行文件。
    支持后缀:

    • .c c语言源代码
    • .h 程序所包含的头文件
    • .i 已经预处理过的c语言源代码
    • .s 汇编后的源代码
    • .o 编译后的源代码

    1.1 gcc编译过程

    C代码编译成可执行程序经过4步:

    1. 预处理:宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法
    • 将头文件引入并展开,符号常量作基础替换。
    1. 编译:检查语法,将预处理后文件编译生成汇编文件
    2. 汇编:将汇编文件生成目标文件(二进制文件)
    3. 链接:C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去

    1.2 gcc编译命令

    1.2.1 分步编译

    1. 预处理:gcc -E hello.c -o hello.i
    2. 编 译:gcc -S hello.i -o hello.s
    3. 汇 编:gcc -c hello.s -o hello.o
    4. 链 接:gcc hello.o -o hello_elf

    gcc命令选项

    选项 含义
    -E 只进行预处理
    -S(大写) 只进行预处理和编译
    -c(小写) 只进行预处理、编译和汇编
    -o file 指定生成的输出文件名为 file

    查看程序依赖的动态库命令: ldd(“l”为字母) 可执行程序

    二、第一次尝试编写C语言程序

    在控制台输出"hello world"

    #include <stdio.h>
    int main()
    {
        printf("hello world");
        return 0;
    }
    

    使用vim编写程序后编译并执行后的结果

    三、代码跟踪测试

    利用包含在stdio.h __FILE____LINE____FUNCTION__可以实现代码跟踪

    • __FILE__: 执行文件的源代码文件名
    • __LINE__: 执行代码在的行数
    • __FUNCTION__: 执行的函数名
    #include <stdio.h>
    int main()
    {
        printf("__FILE__ = %s, __LINE__ = %d, __FUNCTION__ = %s", __FILE__, __LINE__, __FUNCTION__);
        return 0;
    }
    
    

    使用vim编写后编译执行结果

    四、程序

    一个程序应当包含下面两个部分:

    1. 对数据的描述。 在程序中要指定数据类型和数据的组织形式,即数据结构
    2. 对操作的描述。 即操作步骤,也就是算法

    4.1 算法的概念

    解决问题采用的方法和步骤,称之为算法。

    展开全文
  • 2.编译:将源程序翻译为目标文件(.OBJ) 3.链接:将目标文件生成可执行文件( .EXE) 4.运行:执行.EXE文件,得到运行结果 对比java编译的过程,.java通过javac编译成.class文件,然后通过java虚拟机通过加载-链接-...

    1.一个.c文件到编程一个可以执行的.exe文件的过程

    C源程序到运行程序步骤:
    1.编辑:输入源程序并存盘(.C)
    2.编译:将源程序翻译为目标文件(.OBJ)
    3.链接:将目标文件生成可执行文件( .EXE)
    4.运行:执行.EXE文件,得到运行结果

       对比java编译的过程,.java通过javac编译成.class文件,然后通过java虚拟机通过加载-链接-初始化等过程变成jvm可执行的字节码文件。java的编译是通过jvm来实现,一次编译可以在不同的jvm,虚拟机上可以执行,C需要在不同的环境下进行gcc编译,导致C的可移植性不好。

    2GCC常见名利的总结

    上图是gcc -help的常见操作截图:(对常用命令进行说明)

    1. gcc -E source_file.c -E,只执行到预编译。直接输出预编译结果。
    2. gcc -S source_file.c  -S,只执行到源代码到汇编代码的转换,输出汇编代码。
    3. gcc -c source_file.c -c,只执行到编译,输出目标文件。
    4. gcc (-E/S/c/) source_file.c -o output_filename
    -o, 指定输出文件名,可以配合以上三种标签使用。
    -o 参数可以被省略。这种情况下编译器将使用以下默认名称输出:
    -E:预编译结果将被输出到标准输出端口(通常是显示器)
    -S:生成名为source_file.s的汇编代码
    -c:生成名为source_file.o的目标文件。
    无标签情况:生成名为a.out的可执行文件。
    5. gcc -g source_file.c 
    -g,生成供调试用的可执行文件,可以在gdb中运行。由于文件中包含了调试信息因此运行效率很低,且文件也大不少。
    这里可以用strip命令重新将文件中debug信息删除。这是会发现生成的文件甚至比正常编译的输出更小了,
    这是因为strip把原先正常编译中的一些额外信息(如函数名之类)也删除了。用法为 strip a.out
    6. gcc -s source_file.c
    -s, 直接生成与运用strip同样效果的可执行文件(删除了所有符号信息)。
    7. gcc -O source_file.c
    -O(大写的字母O),编译器对代码进行自动优化编译,输出效率更高的可执行文件。
    -O 后面还可以跟上数字指定优化级别,如:
    gcc -O2 source_file.c
    数字越大,越加优化。但是通常情况下,自动的东西都不是太聪明,太大的优化级别可能会使生成的文件产生一系列的bug。一般可选择2;3会有一定风险。
    8. gcc -Wall source_file.c
    -W,在编译中开启一些额外的警告(warning)信息。-Wall,将所有的警告信息全开。
    9. gcc source_file.c -L/path/to/lib -lxxx -I/path/to/include
    -l, 指定所使用到的函数库,本例中链接器会尝试链接名为libxxx.a的函数库。
    -L,指定函数库所在的文件夹,本例中链接器会尝试搜索/path/to/lib文件夹。
    -I, 指定头文件所在的文件夹,本例中预编译器会尝试搜索/path/to/include文件夹。

    展开全文
  • 源程序经过C编译程序编译生成后缀为“.obj”的二进制文件(称为目标文件)。 由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。源程序经过C编译程序编译生成后缀为“.obj”的二进制文件(称为目标文件),...

    c语言源程序的扩展名是“.C”。由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”;源程序经过C编译程序编译生成后缀为“.obj”的二进制文件(称为目标文件)。

    由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。源程序经过C编译程序编译生成后缀为“.obj”的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件把目标文件与C语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。

    说明:

    C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

    尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

    C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。

    C语言既有高级语言的特点,又具有汇编语言的特点;既是一个成功的系统设计语言,又是一个实用的程序设计语言;

    既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序;是一种受欢迎、应用广泛的程序设计语言。

     

    另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~

    UP在主页上传了一些学习C/C++编程的视频教程,有兴趣或者正在学习的小伙伴一定要去看一看哦!会对你有帮助的~

    分享(源码、项目实战视频、项目笔记,基础入门教程)

    欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

    编程学习:

    编程学习:

    展开全文
  • 源程序(源代码)是指按照一定的程序设计语言规范编写的未经过编译的文本文件,是具有可读性的计算机语言指令。可以比作自己手写的程序代码。 可执行程序(Executable Program,EXE file)是可以在操作系统存储空间中...

    源程序(源代码)是指按照一定的程序设计语言规范编写的未经过编译的文本文件,是具有可读性的计算机语言指令。可以比作自己手写的程序代码。

    可执行程序(Executable Program,EXE file)是可以在操作系统存储空间中浮动定位的二进制可执行程序。一般软件安装后会生成可执行文件,可以直接加载到内存中,并又操作系统加载并执行。

    以 C 语言为例,自己编写的源代码文件扩展名为 c,这个 c 文件就是源文件。从源文件到可执行文件一般需要经过几个步骤:预处理->编译->汇编->链接这四个过程。

    • 预处理:预处理相当于根据预处理命令将源代码转换为新的 c 程序,不过通常以 i 为扩展名。
    • 编译:将得到的 i 文件翻译成汇编代码,通常以 s 为扩展名。
    • 汇编:将汇编文件翻译为机器指令,并打包成可重定位目标程序的 o 文件。
    • 链接:将引用的其它 o 文件加到汇编后的 o 文件中,处理后得到最终的可执行文件。

    这里首先在 linux 操作系统中编写源代码,并命名为 hello.c,内容如下:

    #include <stdio.h>
    
    int main()
    {
        printf("Hello world!\n");
        return 0;
    }

     一个很简单的源代码,但是这样的源代码如果不是在集成开发环境(Integrated Development Environment,IDE)中是不能够直接点击执行的,需要经过一系列的操作,具体为:

    # 预处理
    gcc -E hello.c -o hello.i
    # 编译
    gcc -S hello.i -o hello.s
    # 汇编
    gcc -c hello.s -o hello.o
    # 链接
    gcc hello.o -o hello

    经过以下操作后,就能够发现在 hello.c 文件同级目录中出现了文件 hello.i,hello.s,hello.o,hello。可知文件 hello 即为可执行程序,我们在终端中输入下方的指令,就能够看到最后的输出结果。

    ./hello
    展开全文
  • 编辑选择适当的编辑程序,将C语言源程序通过键盘输入到计 算机中,并以文件的形式存入到磁盘中.C 2.编译即将源程序翻译成机器语言程序的过程编译出来的程 序称为目标程序.OBJ 3.连接编译后生成的目标文件经过连接后...
  • C语言程序编译

    2020-07-16 15:24:43
    翻译环境是将源文件经过翻译器变成目标文件,目标文件再经过链接器与链接库变成可执行的程序; 翻译环境也分为几个阶段 1.预处理阶段(gcc -E test.c -o test.i): 宏替换,去注释,头文件展开,条件编译; 2.编译...
  • C语言程序编译过程? 首先编写代码f.c文件 然后通过编译器编译编译包括 1. 预处理 例子:PI=3+1 预处理文件:f.i文件 2. 编译 3. 汇编 然后编译后会得到f.obj文件,f.obj文件中均为0101类型的机器码, 也就是...
  • C语言中要将我们写的源程序生成可执行程序,一共要经过两个过程,第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境,它用于实际执行代码。而在翻译环境中可看做如下图的过程首先...
  • (1).c的源程序经过翻译环境和运行环境两个大的步骤。 其中,翻译环境包含编译和链接。 (2)而编译环境还包括三个阶段,分别是 预处理阶段,编译阶段,汇编阶段 a.预处理阶段生成*.i文件 在linux系统下可以...
  • C语言条件编译

    2019-12-14 15:19:44
    通常情况下,一个C语言源程序的所有非注释语句都要经过编译产生目标代码。但是有时希望对源程序中的部分代码只有在一定的条件下才进行编译,或希望当满足某个条件下对一部分语句进行编译,而当条件满足时对另一部分...
  • C语言程序编译的几个阶段

    千次阅读 2018-02-04 19:19:04
    程序编译的过程中就是将用户的文本形式的代码(c/c++)转化成计算机可以直接执行的机器代码的过程。主要经过这么几个过程: 1、编译,由编译器将c代码(.cpp)转变成汇编代码(.s) 2、汇编,由汇编器将汇编...
  • gcc编译C语言程序的步骤: 1.预处理 -E 进行预处理工作 去掉注释内容 ,进行宏替换... 检查代码或者经过预处理之后代码的语法错误,生成汇编程序 .s 3.汇编 -c 把汇编代码汇编成目标文件(二进制 .o 4.链接 ...
  • C语言程序的存储区域和编译过程

    千次阅读 2014-07-02 22:58:13
    C语言代码(文本文件)形成可执行程序(二进制文件),需要经过预处理-编译-优化-汇编-链接五个阶段。 编译编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编...
  • 0.引言hello.c(源程序)是一条高级C语言程序,虽然它是以一种易读的形式,让人们容易理解。但是,它却无法直接驱动硬件CPU直接执行。为了我们编写的hello.c程序可以被执行,驱动硬件电路工作,hello.c程序必须经过...
  • C语言静态编译和动态编译

    千次阅读 2018-11-12 00:51:25
    可执行文件是计算机可以直接执行的程序,与windows系统的.exe程序相似,它是由代码经过一定的手段翻译成计算机能够读懂的二进制编码,由计算机直接去执行,这个翻译的过程就称之为编译。 脚本文件 脚本文件是一...
  • 系统序文常用的密钥分发技术有 CA 技术和【】 技术。默认名名探究精神的重要性体现在以下哪些方面?()如果采用偶校验,的目的可的扩0101010的校验位是(),0011011的校验位是()。语言源程译后人工智能在医学方面的...
  • C语言编译链接

    2016-09-02 15:56:00
    编译链接是使用高级语言编程所必须的操作,一个源程序只有经过编译、链接操作以后才可以变成计算机可以理解并执行的二进制可执行文件。 编译是指根据用户写的源程序代码,经过词法和语法分析,将高级语言编写的代码...
  • C源程序经过C编译程序编译之后生成一个后缀为.obj的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件,把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。程序设计 ...
  • C语言中的编译预处理

    2013-07-23 10:57:47
     预编译程序所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。这个文件的含义同没有经过预处理的源文件是相同的,但内容有所不同。下一步
  • C语言编译和链接

    2020-07-23 22:29:53
    编译链接是使用高级语言编程所必须的操作,一个源程序只有经过编译、链接操作以后才可以变成计算机可以理解并执行的二进制可执行文件。 编译是指根据用户写的源程序代码,经过词法和语法分析,将高级语言编写的代码...
  • 1. 将C语言源程序预处理,生成.i文件。{预编译处理(.c)} a.宏定义指令:将所有的#define删除,并且展开所有的宏定义 b.条件编译指令:处理所有的条件预编译指令,比如#if #ifdef #elif #else #endif等 c....
  • c语言程序

    2013-02-20 09:21:04
    根据C语言的特点,每一个源程序生成的目标代码将包含源程序所需要表达的所有信息和功能。目标代码中各段生成情况如下: 1.代码段(Code)  代码段由程序中的各个函数产生,函数的每一个语句将最终经过编译和汇编...
  • c语言编译运行的几步

    2021-03-12 17:38:32
    1.c语言源程序文件经过编译连接之后生成一个后缀为 .exe 的文件。 2.编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且...
  • c语言编译链接

    2017-04-06 16:53:04
    学过C语言的人都应该知道,我们所编辑的C语言程序是不能直接放到机器上运行的,它只不过是一个带".c"后缀的文件(也称为代码)而已,需要经过一定的处理才能转换成机器上可运行的可执行文件。我们将对C语言的这种...
  • C语言编译执行过程

    千次阅读 2019-09-27 10:14:57
    C语言编译器的功能就是将源文件,经过编译、链接之后可以形成可执行文件 那么具体的步骤是什么呢? C源程序头文件-->预编译处理(cpp)-->编译程序本身-->优化程序-->汇编程序-->链接程序-...
  • C语言中的各个程序

    2021-01-05 21:03:41
    源程序、目标程序、执行程序的区别 1)程序:为了使计算机能按照人们的意志工作,就要根据问题的要求,编写相应的程序。...(3)目标程序:源程序经过编译程序”编译所得到的二进制代码称为目标程序。目标程
  • 编译时当遇到一个不是用户定义的函数时编译器就到头文件中去查找如果找到了连接时就将...1编辑 编辑是指C语言源程序的输入和修改 2编译 源程序翻译成可重定位的二进制的目标程序 第1章 概 述 C语言的发展及主要特点 1.
  • C语言程序设计基础习题集 一选择填空 知识点1C程序的基本结构和算法基本概念 C语言程序的基本单位为_ A) 程序行 B) 语句 C) 函数 D) 字符 用C语言编写的代码程序_ A)可立即执行 B)是一个源程序 C)经过编译即可执行 D...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 375
精华内容 150
关键字:

c语言源程序经过编译

c语言 订阅