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

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

关于在Windows命令行下编译C程序方法可查看往期笔记:【C语言笔记】windows命令行下编译C程序、【C语言笔记】使用notepad++、MinGW来开发C程序。...首先,使用命令gcc -v查看当前Linux发行版是否有安装gcc编译器(PS:本文使用Linux发行版是红帽6): ? 使用vi/vim编辑器代码并保存为hello.c: ?...以上就是在Linux编译C程序基本方法,适用于源文件不多情况。后续笔记中还会分享其他编译方法,欢迎持续关注!如果你觉得对你有用的话,麻烦帮忙点个赞。...如果你觉得对你同学与朋友也有用的话,欢迎转发。 在Linux下进行C语言编程学习可能会增加学习成本,但是从长远来看仍然是有必要。...若不想安装Linux系统,也想适应一下Linux环境,则可参考往期笔记:【C语言笔记】Windows下体验Linux环境。

12.5K10

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

下面以windows环境下test.c为例,test.c代码为: #include int main(void) { printf("This is a test program...如图,编译生成可执行文件过程实际包含四个过程:(1)预处理;(2)编译;(3)汇编;(4)链接。...2、预处理(Preprpcessing) 使用预处理器把源文件test.c经过预处理生成test.i文件,预处理用于将所有的#include头文件以及宏定义替换成其真正内容。...预处理命令为: gcc -E test.c -o test.i 上述命令中-E是让编译器在预处理之后就退出,不进行后续编译过程;-o是指定输出文件名。 预处理之后得到仍然是文本文件。...汇编过程命令为: gcc -c test.s -o test.o 上述命令中-c、-o让汇编器把汇编文件test.s转换成目标文件test.o。

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

    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.6K20

    MacC++

    用惯Windows同学可能刚开始用Mac时候并不知道如何C++,我刚开始在MacC++时候也遇到过这个困扰,Mac上并没有Windows上自己用习惯Visual C++,下面我分享一下个人在...按下Create a new Xcode project后会跳出一个弹窗,选择macOS下Command Line Tool,对于C程序类来说,它被归类到Mac命令行工具里面。 ?...在打开界面中选择右侧main.cpp这个选项,好了,接下来就可以愉快编译了,试试写下"Hello, World!",点击右上方类似播放器按键来运行程序吧~ ?...2.接下来介绍另一种方法,对于只是学习来说,我认为不必要用那么庞大IDE来学习,Mac自带终端工具就行,使用方便,不占内存,我平时也是用shell来学习C++。...首先,打开文本编辑工具,Mac自带也行,在这里我推荐Sublime,按command + N新建窗口,按下command + S保存文件,修改文件后缀名为.cpp或.cc(C++格式),选择储存位置,

    2.5K90

    C语言编译过程

    处理条件预编译 #if, #ifdef, #if, #elif,#endif 处理“#include”预编译指令,将包含“.h”文件插入对应位置。这可是递归进行,文件内可能包含其他“.h”文件。...用于显示调试信息:错误或警告位置。 保留#pragma编译器指令。(1)设定编译器状态,(2)指示编译器完成一些特定动作。...代表接下来文本应该被当做包含一个隐式extern "C编译 1.高级语言->汇编代码 命令 gcc -S a.i -o a.s .file "a.c" .globl _...链接 使用到了C标准库东西“printf”,但是编译过程只是把源文件翻译成二进制而已,这个二进制还不能直接执行,这个时候就需要做一个动作,将翻译成二进制与需要用到库绑定在一块。...动态库与之相反,在编译链接时并没有把库文件代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统开销。

    1.9K20

    叙述 C语言编译

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

    1.8K11

    C语言编译过程

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

    1.9K20

    C语言】预编译

    _CSDN博客  系列专栏-【C】系列_謓泽博客-CSDN博客 ✉️我们并非登上我们所选择舞台,演出并非我们所选择剧本 目录 write in front    预定义符号  日志 条件编译 ...__LINE__:表示文件当前行号。 __DATE__:表示文件被编译日期。 __TIME__:表示文件被编译时间。...条件编译 条件编译一句话:满足条件就编译,不满足条件就不编译。 在编译一个程序时候,我们如果将一条语句或者是一组语句编译再或者是放弃是非常方便。因为我们有条件编译指令。...C ​ 常见条件编译指令 #if指令 该指令检测表达式值是否为真。...⒊条件编译在哪些地方使用? 通常用于中大型项目当中会使用到条件编译以及版本之间维护(某某软件完全版和精简版)当然条件编译还可以完成一些其它事情。 ★结论⇢条件编译本质是对代码进行裁剪。

    87210

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

    前几天看了《程序员自我修养——链接、装载与库》中第二章“编译和链接”,主要根据其中内容简单总结一下C程序编译过程吧。...\n”); return 0; } 通常我们使用gcc来生成可执行程序,命令为:gcc hello.c,默认生成可执行文件a.out 其实编译(包括链接)命令:gcc hello.c 可分解为如下4...$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...$ gcc –c hello.c –o hello.o 或者 $ as hello.s –o hello.co 由于hello.o内容为机器码,不能以普通文本形式查看(vi 打开看到是乱码)。

    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...安装GDB调试器 yum install gdb (CentOS) gdb -v 查看gdb是否安装成功 安装LLDB调试器(暂时不) 大多数电脑还是用GDB作为调试器,一般只有MAC使用且内置...LLDB,暂时先不这个 安装g++编译器 ​ yum install gcc-g++ ​ gcc -v 查看是否安装成功 通过g++编译程序 创建程序main.cpp,func.cpp

    22.8K50

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

    c编译器-c语言编译器是干什么用   本人不才,仅就个人意见谈谈:   1。...注意:API是你编译器提供,也就是说你可以直接用他,而不需要写很多底层代码了,如果要很明确说的话,就是一个应用程序接口需要很多底层代码才能写出,而在你使用C语言中只是一个语句而已,包括你一个定义变量语句...c语言编译器哪个好?   g++,icc.   ...-c++ source file,在头部加上   #   #   然后就可以编译c语言了   C++编程软件   这个永远没有统一标准。   ...有一些信息学竞赛,如较正规ACM比赛,都在Linux系统上,采用是gcc编译器,这个时候你就必须得熟悉这个编译器了。

    6.9K50

    C语言---编译和链接

    • 多个.c⽂件单独经过编译器,编译处理⽣成对应⽬标⽂件。...• 注:在Windows环境下⽬标⽂件后缀是 .obj ,Linux环境下⽬标⽂件后缀是 .o • 多个⽬标⽂件和链接库⼀起经过链接器处理⽣成最终可执⾏程序。...: 将c语言代码转换成汇编代码 在这个阶段做到了 词法分析、语法分析、语义分析及优化这几个步骤 词法分析 对于下面的代码,编译器会进行怎么样语法分析呢?...链接解决是⼀个项⽬中多⽂件、多模块之间互相调⽤问题 我们在add.c一个加法函数 在test.c中调用加法函数 我们最后要在这个阶段将两个文件符号表进行合并 合并之后,在add.c加法函数地址和...test.c 经过编译器处理⽣成 test.o add.c 经过编译器处理⽣成 add.o 我们在 test.c ⽂件中使⽤了 add.c ⽂件中 Add 函数和 g_val 变量。

    7210

    C语言详解(预编译

    前言 本篇文章将详细介绍编译过程中预编译具体细节 在C语言学习中部分人可能会忽视这一部分学习,因为像VS这样相对强大集成开发环境,我们在写好代码后只需要开始执行即可,所以部分人认为这一部分不值得我们花费时间去学习...其实不然,学习C语言编译过程可以帮助我们更深入地了解C语言编译过程和语法特性,提高代码编写效率和质量,以及拓展编程技能 1、预定义符号 C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预编译阶段处理...(假定某个程序中声明了一个一定长度数组,如果机器内存有限,我们需要一个很小数组,但是另外一个机器内存大些,我们需要一个较大数组) 编译指令: //linux 环境演示 gcc -D ARRAY_SIZE...#endif 或者 #pragma once 就可以避免头文件重复引入。 总结 预编译C语言编译过程第一阶段,在预编译阶段可以对源代码进行预处理,如宏定义、头文件包含等。...通过学习预编译过程,可以更全面地理解C语言代码编译过程。 预编译指令能够简化代码结构、提高代码重用性和可维护性。学习预编译过程可以帮助程序员更好地利用预编译指令优化代码结构,提高代码质量。

    9510

    C语言编译和链接

    一、翻译环境和运行环境 在c语言实现中,存在两个环境 翻译环境:在这个环境中源代码被转换成可执行二进制指令 运行环境:实际执行代码 二、翻译环境 翻译由编译和链接两个过程组成 编译又可以分为预处理...、编译、汇编三个过程 一个c语言项目一般是由多个.c文件一起构建,多个.c文件通过如下步骤生成可执行程序: ①多个.c文件单独经过编译器,编译处理生成对应目标文件 ②多个目标文件和链接库一起经过链接器处理生成最终可执行程序...③链接库是指运行时库(支持程序运行基本函数集合)或者第三方库 注意:在Windows环境下目标文件后缀是.obj,Linux环境下目标文件后缀是.o 以下就是编译与链接过程: 1、...③处理 #include 预编译指令,将包含头文件内容插入到该预编译指令位置。...,它过程主要包括:地址和空间分配、符号决议、重定位等 重定位:当我们使用多个.c文件生成一个可执行程序时候,由于编译时候是每个文件单独编译,当我们在一个文件中使用另一个文件定义函数时,我们是需要明确地址

    8210
    领券