首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux笔记】Linux编译C语言程序

在上一篇笔记中有分享Linux下的vi/vim编辑器的使用方法(【Linux笔记】Vi/Vim编辑器),现在我们就可以使用vi/vim编辑器编写C代码了。那么写完代码怎么进行编译呢?...关于在Windows命令行下编译C程序的方法可查看往期笔记:【C语言笔记】windows命令行下编译C程序、【C语言笔记】使用notepad++、MinGW来开发C程序。...首先,使用命令gcc -v查看当前的Linux发行版是否有安装gcc编译器(PS:本文使用的Linux发行版是红帽6): ? 使用vi/vim编辑器写代码并保存为hello.c: ?...在Linux下进行C语言编程的学习可能会增加学习的成本,但是从长远来看仍然是有必要的。...若不想安装Linux系统,也想适应一下Linux环境,则可参考往期笔记:【C语言笔记】Windows下体验Linux环境。

12.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux(Ubuntu)下编写编译C语言

    大家都知道在Windows中运行C语言很简单,打开一个IDE(VS或者codeblocks)编写代码,点击一个按钮就能运行了。...在Linux中,大家不怎么习惯用IDE,更多的开发者选择手动编辑、编译、连接、运行。 下面介绍如何进行在Linux(Ubuntu)下运行C语言。...①打开Ubuntu,在一个空文件夹内建立一个新的空文件,并改名为.c的文件 如图test.c ? ? ②打开文件编辑C语言代码并保存 ? ③返回到当前文件夹,打开终端 ?...④接下来需要在终端编译,连接 编译代码: gcc test.c -o test 格式: gcc [C文件名] -o [C文件名无后缀] ? 此时会在当前文件夹内出现一个编译后的文件 ?...附1:非图形界面Linux全终端运行C程序:http://blog.csdn.net/qq_36328643/article/details/52794876 附2:利用Vim编辑器编写C程序:http

    9.5K20

    C语言编译过程

    编译---->形成目标代码,目标代码是在目标机器上运行的代码。 连接---->将目标代码C函数库相连接,并将源程序所用的库代码与目标代码合并,并形成最终可执行的二进制机器代码(程序)。...如果用一张图来表示: image.png 编译编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序...C源程序头文件-->预编译处理(cpp)-->编译程序本身-->优化程序-->汇编程序-->链接程序-->可执行文件 1.编译预处理 读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理 [...如数字、字符串、变量的定义,以及C语言的关键字,如main,if,else,for,while,{,},+,-,*,\,等等。...对于被翻译系统处理的每一个C语言源程序,都将最终经过这一处理而得到相应的目标文件。目标文件中所存放的也就是与源程序等效的目标的机器语言代码。 目标文件由段组成。

    1.9K20

    叙述 C语言编译

    @(C语言)[code] 用一段简单的代码,探讨下从C代码到最终可执行文件的编译过程,追根究底。 偶尔了解下底层,也就没那么多莫名其妙了。...工作原因有时候会用python写写测试工具,感受到其快速实现应用的便利,但由于偏底层开发,主力语言依然是C。对于开发语言没有什么优劣概念,在特定的情景下哪种实现更佳就用哪种,工具合适才是最好的。...个人开发环境 ubuntu 14.04 ---- 编译的作用 相比python,lua等脚本语言解释执行方式,编译C是为了提高程序的运行效率。...把对用户友好的语言文本编译成对机器友好的特定指令直接执行,而不是执行时一条一条通过解释器解析执行,很大地提高了执行的效率。对应C主要用于底层,系统层次,追求高性能表现,亦或者,平台资源限制。...#ifndef _XXX__XXX #define _XXX_XXX #endif 编译(Compiling) 这一环节,是把C代码转换为汇编代码并根据需求进行一定程度的优化处理。

    1.7K11

    C语言编译过程

    预处理命令$ gcc -E a.c -o a.i ...省略部分代码 # 2 "a.c" 2 # 1 "head.h" 1 # 3 "head.h" int N=100; void printStr...代表接下来的文本应该被当做包含一个隐式的extern "C编译 1.高级语言->汇编代码 命令 gcc -S a.i -o a.s .file "a.c" .globl _...->机器代码 命令gcc -c a.s -o a.o 得到的结果是二进制文件。...函数库一般分为静态库和动态库两种 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为”.a”。...动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。

    1.9K20

    C语言】预编译

    比如↓ 调试行的代码,删除可惜,保留又碍事,所以我们可以选择性的编译。 举出下面的例子代码如下↓ 在这里会举出两个例子①参与编译、②不参与编译。...实际上就是我们用了条件编译语句。把它给屏蔽了也就是不参与编译了。 #ifdef PRINT // #endif 那么我们想让上面代码参与编译我们该怎么办呢。实际上很简单+#define 即可。...C ​ 常见条件编译指令 #if指令 该指令检测表达式值是否为真。...三大要点 ⒈为何要有条件编译? 本质是为了进行对应的达到裁剪代码的目的,而我们裁剪代码的目的通常很丰富具体是和你的应用场景有关系的。...★结论⇢条件编译的本质是对代码进行裁剪。

    86910

    C语言笔记】C语言编译的过程

    1、前言 如果你使用的是集成开发环境,那么你点击编译按钮就可生成可执行文件,然后点击运行即可运行。那么,你知道从源代码到可执行文件经历了哪些过程吗。仅仅是编译?...下面以windows环境下的test.c为例,test.c里的代码为: #include int main(void) { printf("This is a test program...预处理的命令为: gcc -E test.c -o test.i 上述命令中-E是让编译器在预处理之后就退出,不进行后续编译过程;-o是指定输出文件名。 预处理之后得到的仍然是文本文件。...3、编译(Compilation) 使用编译器将预处理文件test.i编译成汇编文件test.s。...汇编过程的命令为: gcc -c test.s -o test.o 上述命令中-c、-o让汇编器把汇编文件test.s转换成目标文件test.o。

    12.2K31

    C语言系列】C语言编译流程分析

    前几天看了《程序员的自我修养——链接、装载与库》中的第二章“编译和链接”,主要根据其中的内容简单总结一下C程序编译的过程吧。...$gcc –S hello.i –o hello.s 或者 $ /usr/lib/gcc/i486-linux-gnu/4.4/cc1 hello.c 注:现在版本的GCC把预处理和编译两个步骤合成一个步骤...gcc其实是后台程序的一些包装,根据不同参数去调用其他的实际处理程序,比如:预编译编译程序cc1、汇编器as、连接器ld 可以看到编译后的汇编代码(hello.s)如下: .file "hello.c...helloworld的大体编译和链接过程就是这样了,那么编译器和链接器到底做了什么呢? 编译过程可分为6步:扫描(词法分析)、语法分析、语义分析、源代码优化、代码生成、目标代码优化。...中间代码使得编译器被分为前端和后端。编译器前端负责产生机器无关的中间代码编译器后端将中间代码转化为目标机器代码。 目标代码生成:代码生成器(Code Generator).

    10.9K51

    Linux编译C++

    创建C++编译环境 安装VIM PLUS 为什么安装VIM PLUS: 可以为我们提供良好的编译环境,高亮代码,智能提示等等~ git clone https://github.com/chxuan...此事将被报告的异常) 1)此时脚本开始运行 2)选择python3解释编译ycm文件 此时脚本文件会问你是选择python2还是python3来编译ycm文件?...LLDBLLDB(Low Level Debug)是Apple正在迁移的LLVM工具套件(包括Clang)的一部分具有REPL (Read-Eval-Print Loop,交互式解释器)、C++ 和 Python...,int *b); VimPlus如图所示: g++ -g main.cpp func.cpp -o out 我们详细描述一下这条指令的执行过程 g++ main.cpp 相当于g++ -c...main函数设置断点(此时程序会停在初始化的第一条语句) run 执行程序 查看栈 frame 可以查看程序在哪一个函数 此时执行frame可以看到程序进入了change()中 ​ 我们继续执行代码

    22.8K50

    c语言编译器在线-c在线编译器(c语言在线编程)

    c编译器-c语言编译器是干什么用的   本人不才,仅就个人意见谈谈:   1。...什么是编译器:   简单的说,编译器是一种将高级语言经过其解释,翻译成可以运行的二进制代码(有可能是汇编代码,但这种方式处理不一样,还有编译成其他形式的如JAVA是编译成"字节码文件"),再通过它的连接程序就调用了系统内部的一些库...注意:API是你的编译器提供的,也就是说你可以直接用他,而不需要写很多的底层的代码了,如果要很明确的说的话,就是一个应用程序接口需要很多的底层代码才能写出,而在你使用的C语言中只是一个语句而已,包括你写一个定义变量的语句...不过我还是觉得有点不便,那就是代码提示完成功能不是很好,这一点c语言编译器在线,VC++ 6.0反而做得比较好。   ...有一些信息学竞赛,如较正规的ACM比赛,都在Linux系统上,采用的是gcc编译器,这个时候你就必须得熟悉这个编译器了。

    6.9K50

    C语言编译和链接

    一、翻译环境和运行环境 在c语言的实现中,存在两个环境 翻译环境:在这个环境中源代码被转换成可执行的二进制指令 运行环境:实际执行代码 二、翻译环境 翻译由编译和链接两个过程组成 编译又可以分为预处理...、编译、汇编三个过程 一个c语言的项目一般是由多个.c文件一起构建的,多个.c文件通过如下步骤生成可执行程序: ①多个.c文件单独经过编译器,编译处理生成对应的目标文件 ②多个目标文件和链接库一起经过链接器处理生成最终的可执行程序...③链接库是指运行时库(支持程序运行的基本函数集合)或者第三方库 注意:在Windows环境下目标文件的后缀是.obj,Linux环境下的目标文件的后缀是.o 以下就是编译与链接的过程: 1、....i文件中不再包含宏定义,所有的宏定义已经被展开了,我们可以通过查看预处理后的.i文件来确认宏定义和头文件是否包含正确 2、编译 编译的过程就是将预处理后的文件进行语法词法的分析和优化,生成汇编代码 ①...词法分析 源代码程序会被输入扫描器,在扫描器中被简单词法分析,把代码中的字符分割开 arr[input] = (input+2)*(5-2); 这个代码是一个数组赋值代码,我们进行词法分析的时候会将它们全部拆开

    8010

    C语言编译与链接

    前言 我们想一个问题,我们写的C语言代码都是文本信息,电脑能直接执行c语言代码吗?...肯定不能啊,计算机能执行的是二进制指令,所以将C语言转化为二进制指令需要一段过程,这篇博客讲一下编译与链接,来一起探讨C语言是如何转化为二进制指令的。...第2种是执行环境,它用于实际执行代码。 2. 翻译环境 那翻译环境是怎么将源代码转换为可执行的机器指令的呢? 这里我们就得展开开讲解一下翻译环境所做的事情。...一个C语言的项目中可能有多个 .c 文 件一起构建,那多个 .c 文 件如何生成可执行程序呢? • 多个.c文件单独经过编译器,编译处理生成对应的目标文件。...编译过程的命令如下: gcc -S test.i -o test.s 就是把test.i文件进行-o处理,就是编译处理最后结果生成的文件为test.s 对下面代码进行编译的时候,会怎么做呢

    10710

    C语言---编译和链接

    1.翻译环境和运行环境 在 ANSI C 的任何⼀种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令(⼆进制指令)。 第2种是执⾏环境,它⽤于实际执⾏代码。...翻译环境就是编译和链接 经过翻译环境的处理生成可执行程序(.exe文件) 可执行程序在运行环境进行运行生成我们想要的结果 2.翻译环境 那翻译环境是怎么将源代码转换为可执⾏的机器指令的呢?...• 多个.c⽂件单独经过编译器,编译处理⽣成对应的⽬标⽂件。...• 注:在Windows环境下的⽬标⽂件的后缀是 .obj ,Linux环境下⽬标⽂件的后缀是 .o • 多个⽬标⽂件和链接库⼀起经过链接器处理⽣成最终的可执⾏程序。...: 将c语言中的代码转换成汇编代码 在这个阶段做到了 词法分析、语法分析、语义分析及优化这几个步骤 词法分析 对于下面的代码编译器会进行怎么样的语法分析呢?

    6910

    c语言编译

    c语言编译器是一款涵盖丰富学习资料的软件,用户可以在线一键学习辅导c语言编译器在线,可以满足用户的学习需求,能够为用户带来优质的服务,随时都可以在软件上学习各种有趣编程知识。   ...软件特色   1、资源丰富   用户可以在软件上找到丰富的C语言教程,能够看到很多不同的编程资源,轻松地去学习;   2、不断更新   软件上的素材资源会不断地更新,可以让用户轻松地学习,能够在线学习到很多实用知识...;   3、满足需求   软件可以满足用户的学习需求,通过软件就可以直接去软件中学习,能学到自己没学过的;   4、功能完善   用户可以在线编译自己需要的编译代码,支持编译多种不同的编程语言,让学习更方便...软件亮点   1、很多简单的功能都可以在这里找到,用户可以在线管理自己代码,一键重排代码格式;   2、能够轻松地在软件上进行编译,能够验证一些小程序的真实性,提供了核心编辑功能;   3、不需要电脑就可以学习编程了...软件优势   - 编译迅速,软件的编译速度非常迅速,能够直接将编译完成的代码放在眼前,轻松查看;   - 智能联想c语言编译器在线,拥有联想功能,可以帮助用户快速地输入常用语句,不输完整也会有完整词;

    2.1K10
    领券