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

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语言)[code] 用一段简单的代码,探讨下从C代码到最终可执行文件的编译过程,追根究底。 偶尔了解下底层,也就没那么多莫名其妙了。...工作原因有时候会用python写写测试工具,感受到其快速实现应用的便利,但由于偏底层开发,主力语言依然是C。对于开发语言没有什么优劣概念,特定的情景下哪种实现更佳就用哪种,工具合适才是最好的。...个人开发环境 ubuntu 14.04 ---- 编译的作用 相比python,lua等脚本语言解释执行方式,编译C是为了提高程序的运行效率。...把对用户友好的语言文本编译成对机器友好的特定指令直接执行,而不是执行时一条一条通过解释器解析执行,很大地提高了执行的效率。对应C主要用于底层,系统层次,追求高性能表现,亦或者,平台资源限制。...编译的过程 gcc 的编译流程分为四个步骤: 计算机系统设计基本原则:层次化和抽象。 ? 编译flow 编写一个最简单的程序 hello.c,以此为例,看看各个过程做了什么事情。

    1.7K11

    C语言编译过程

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

    1.9K20

    C语言编译过程

    保留#pragma编译器指令。(1)设定编译器状态,(2)指示编译器完成一些特定的动作。...flag对应的含义 文件的开始 文件的返回(include另一个文件后) 代表接下来的文本来自系统头文件,所以某些警告应该禁止。...代表接下来的文本应该被当做包含一个隐式的extern "C编译 1.高级语言->汇编代码 命令 gcc -S a.i -o a.s .file "a.c" .globl _...链接 使用到了C标准库的东西“printf”,但是编译过程只是把源文件翻译成二进制而已,这个二进制还不能直接执行,这个时候就需要做一个动作,将翻译成的二进制与需要用到库绑定在一块。...动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是程序执行时由运行时链接文件加载库,这样可以节省系统的开销。

    1.9K20

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

    前几天看了《程序员的自我修养——链接、装载与库》中的第二章“编译和链接”,主要根据其中的内容简单总结一下C程序编译的过程吧。...\n”); return 0; } 通常我们使用gcc来生成可执行程序,命令为:gcc hello.c,默认生成可执行文件a.out 其实编译(包括链接)的命令:gcc hello.c 可分解为如下4...保留所有的#pragma编译器指令,因为编译器需要使用它们 通常使用以下命令来进行预处理: gcc -E hello.c -o hello.i 参数-E表示只进行预处理 或者也可以使用以下指令完成预处理过程...$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

    10.9K51

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

    下面以windows环境下的test.c为例,test.c里的代码为: #include int main(void) { printf("This is a test program...2、预处理(Preprpcessing) 使用预处理器把源文件test.c经过预处理生成test.i文件,预处理用于将所有的#include头文件以及宏定义替换成其真正的内容。...预处理的命令为: 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语言在线编程)

    c编译器-c语言编译器是干什么用的   本人不才,仅就个人意见谈谈:   1。...c语言编译器哪个好?   g++,icc.   ...-c++ source file,头部加上   #   #   然后就可以编译c语言写的了   C++编程软件   这个永远没有统一的标准。   ...turbo c vista下正常; visual c++ 6 vista下也正常; 至于其他c语言开发软件我就没有测试了.......小问题二:   类中对友元函数和重载的支持不是很好,虽然打了补丁,还是有点问题,最经典的一次就是我写了一个类的重载运算符c语言编译器在线,仔细看了好久,还是提示有一个错误,忘记是什么了,好像是什么,都不知道错在哪里

    6.9K50

    C语言编译和链接

    一、翻译环境和运行环境 c语言的实现中,存在两个环境 翻译环境:在这个环境中源代码被转换成可执行的二进制指令 运行环境:实际执行代码 二、翻译环境 翻译由编译和链接两个过程组成 编译又可以分为预处理...、编译、汇编三个过程 一个c语言的项目一般是由多个.c文件一起构建的,多个.c文件通过如下步骤生成可执行程序: ①多个.c文件单独经过编译器,编译处理生成对应的目标文件 ②多个目标文件和链接库一起经过链接器处理生成最终的可执行程序...③链接库是指运行时库(支持程序运行的基本函数集合)或者第三方库 注意:Windows环境下目标文件的后缀是.obj,Linux环境下的目标文件的后缀是.o 以下就是编译与链接的过程: 1、...预处理 预处理阶段,源文件和头文件都会被处理成为.i为后缀的文件 预处理阶段主要处理源文件中#开始的预编译指令,规则如下: ①将所有的#define删除,并展开所有的宏定义 ②处理所有的条件编译指令...,由于编译的时候是每个文件单独编译的,当我们一个文件中使用另一个文件定义的函数时,我们是需要明确地址的,这时我们会将地址暂时搁置,等到链接的时候再将地址修正,让它们的地址真正成为这个函数的地址,这个地址修正的过程

    8210

    C语言编译与链接

    前言 我们想一个问题,我们写的C语言代码都是文本信息,电脑能直接执行c语言代码吗?...肯定不能啊,计算机能执行的是二进制指令,所以将C语言转化为二进制指令需要一段过程,这篇博客讲一下编译与链接,来一起探讨C语言是如何转化为二进制指令的。...一个C语言的项目中可能有多个 .c 文 件一起构建,那多个 .c 文 件如何生成可执行程序呢? • 多个.c文件单独经过编译器,编译处理生成对应的目标文件。...test.c 经过编译器处理生成 test.o add.c 经过编译器处理生成 add.o 我们 test.c 的文件中使用了 add.c 文 件中的 Add 函数...结束语 本篇博客总结了编译和链接涉及C语言的有关知识,其实很多内部的细节无法展开总结。

    10910

    C语言---编译和链接

    gcc 环境下想观察⼀下,对 test.c ⽂件预处理后的.i⽂件,命令如下: gcc -E test.c -o tes.i E就是预处理之后停下来--完成预处理,预处理之后咱们就能停下来 -o就是用来指定我们要输出的文件名字...: 将c语言中的代码转换成汇编代码 在这个阶段做到了 词法分析、语法分析、语义分析及优化这几个步骤 词法分析 对于下面的代码,编译器会进行怎么样的语法分析呢?...链接解决的是⼀个项⽬中多⽂件、多模块之间互相调⽤的问题 我们add.c中写一个加法函数 test.c中调用加法函数 我们最后要在这个阶段将两个文件的符号表进行合并 合并之后,add.c中的加法函数的地址和...test.c 经过编译器处理⽣成 test.o add.c 经过编译器处理⽣成 add.o 我们 test.c 的⽂件中使⽤了 add.c ⽂件中的 Add 函数和 g_val 变量。...我们 test.c ⽂件中每⼀次使⽤ Add 函数和 gval 的时候必须确切的知道 Add 和 gval 的地 址,但是由于每个⽂件是单独编译的,在编译编译 test.c 的时候并不知道 Add

    7110

    C语言详解(预编译

    前言 本篇文章将详细介绍编译过程中预编译的具体细节 C语言的学习中部分人可能会忽视这一部分的学习,因为像VS这样相对强大的集成开发环境,我们写好代码后只需要开始执行即可,所以部分人认为这一部分不值得我们花费时间去学习...其实不然,学习C语言编译过程可以帮助我们更深入地了解C语言编译过程和语法特性,提高代码编写的效率和质量,以及拓展编程技能 1、预定义符号 C语言设置了一些预定义符号,可以直接使用,预定义符号也是编译阶段处理的...__FILE__:正在编译的源文件的文件名 __LINE__:文件当前的行号 __DATE__:文件被编译的日期 __TIME__:文件被编译的时间 __STDC__:如果编译器遵循 ANSI C,其值为...=10 programe.c 11、条件编译 满足条件,就参与编译;不满足条件,就不参与编译编译一个程序的时候我们如果要将一条语句(一组语句)编译或者放弃是很方便的,因为我们有条件编译指令: 1....总结 预编译C语言编译过程的第一阶段,编译阶段可以对源代码进行预处理,如宏定义、头文件包含等。通过学习预编译过程,可以更全面地理解C语言代码的编译过程。

    8510

    c语言编译

    c语言编译器是一款涵盖丰富学习资料的软件,用户可以在线一键学习辅导c语言编译器在线,可以满足用户的学习需求,能够为用户带来优质的服务,随时都可以软件上学习各种有趣编程知识。   ...软件特色   1、资源丰富   用户可以软件上找到丰富的C语言教程,能够看到很多不同的编程资源,轻松地去学习;   2、不断更新   软件上的素材资源会不断地更新,可以让用户轻松地学习,能够在线学习到很多实用知识...;   3、满足需求   软件可以满足用户的学习需求,通过软件就可以直接去软件中学习,能学到自己没学过的;   4、功能完善   用户可以在线编译自己需要的编译的代码,支持编译多种不同的编程语言,让学习更方便...软件优势   - 编译迅速,软件的编译速度非常迅速,能够直接将编译完成的代码放在眼前,轻松查看;   - 智能联想c语言编译器在线,拥有联想功能,可以帮助用户快速地输入常用语句,不输完整也会有完整词;...  - 没有广告,使用软件的时候不会出现广告,能够轻松地使用,软件上自由地编译学习。

    2.1K10

    C语言——Q编译和链接

    • 多个.c⽂件单独经过编译编译处理⽣产对应的目标文件; • 注:Windows环境下的⽬标⽂件的后缀是 .obj ,Linux环境下⽬标⽂件的后缀是 .o ;... gcc 环境下想观察⼀下,对 test.c ⽂件预处理后的.i⽂件,命令如下: gcc -E test.c -o test.i 预处理阶段主要处理那些源⽂件中#开始的预编译指令。...⽐如: ⼀个C的项⽬中有2个.c⽂件( test.c 和 add.c ),代码如下: #include //test.c //声明外部函数 extern int Add(int...test.c 经过编译器处理⽣成 test.o add.c 经过编译器处理⽣成 add.o 我们 test.c 的⽂件中使⽤了 add.c ⽂件中的 Add 函数和 g_val 变量。...我们 test.c ⽂件中每⼀次使⽤ Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地 址,但是由于每个⽂件是单独编译的,在编译编译 test.c 的时候并不知道 Add

    10610

    初识C语言·编译与链接

    1 翻译环境和运行环境 C语言标准ANSI C 实现C语言代码的时候 一般需要经过两种环境,一是翻译环境,二是运行环境,计算机能识别的是二进制的指令,人写完代码后通过翻译环境,使代码变成计算机能读懂的可执行的机器指令...编译的时候,机器通过编译器使.c文件生成.obj文件,.obj文件是目标文件(windows是.obj为后缀,Linux环境下是.o为后缀),多个目标文件经过链接库的处理,最后生成 .exe文件 VS2022...汇编: 汇编的指令如下: gcc -c test.s -o test.o 汇编器将汇编代码变成机器可以执行的指令,每一个汇编语句几乎都对应一个机器指令,而汇编语言较难的一个原因就是不同的机器的汇编语言是不一样的...链接解决的是一个项目中多文件多模块互相调用的问题,比如一个C语言的项目中有两个.c文件(test.c add.c) extern int Add(int, int);//声明外部函数 extern int...经过编译器处理生成了test.o文件,Add.c经过编译器处理生成了Add.o文件,通过关键字extern我们test.c文件里面使用了函数Add 和 全局变量g_val,但是每一次使用这两个外部符号的时候必须确切的知道

    9010

    C语言编译和链接理解

    翻译环境和运行环境 : 1.翻译环境和运行环境:ANSI C的任何⼀种实现中,存在两个不同的环境。...⼀个C语⾔的项⽬中可能有多个 .c 文件⼀起构建,那多个 .c 文件如何⽣成可执行程序呢?...(1) 多个.c⽂件单独经过编译器,编译处理⽣成对应的⽬标⽂件 (2) 注:Windows环境下的⽬标⽂件的后缀是 .obj ,Linux环境下⽬标⽂件的后缀是 .o (3)多个⽬标⽂件和链接库⼀起经过链接器处理...翻译环境:预编译+编译+汇编+链接: 1.预编译预处理阶段,源⽂件和头⽂件会被处理成为.i为后缀的⽂件 gcc 环境下想观察⼀下,对 test.c ⽂件预处理后的.i⽂件,命令如下: gcc...-E test.c -o test.i 预处理阶段主要处理那些源⽂件中#开始的预编译指令。

    8710

    C语言程序编译和链接

    ANSI C的任何⼀种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令(⼆进制指令)。 第2种是执⾏环境,它⽤于实际执⾏代码。...如果再把编译器展开成3个过程,那就变成了下⾯的过程: 预处理(预编译预处理阶段,源⽂件和头⽂件会被处理成为.i为后缀的⽂件。...生成test.i文件 编译  放的是汇编代码:(将.c文件转换为汇编代码) gcc -S test.i -o test.s 经过词法分析、语法分析、语义分析及优化,⽣成相应的汇编代码⽂件。...test.c 经过编译器处理⽣成 test.o  add.c 经过编译器处理⽣成add.o  我们 test.c 的⽂件中使⽤了 add.c ⽂件中的 Add 函数和 g_val 变量。...我们 test.c ⽂件中每⼀次使⽤ Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地 址,但是由于每个⽂件是单独编译的,在编译编译 test.c 的时候并不知道 Add

    10510
    领券