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

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

在上一篇笔记中有分享Linux下的vi/vim编辑器的使用方法(【Linux笔记】Vi/Vim编辑器),现在我们就可以使用vi/vim编辑器编写C代码了。那么写完代码该怎么进行编译呢?...关于在Windows命令行下编译C程序的方法可查看往期笔记:【C语言笔记】windows命令行下编译C程序、【C语言笔记】使用notepad++、MinGW来开发C程序。...以上就是在Linux下编译C程序的基本方法,适用于源文件不多的情况。后续的笔记中还会分享其他编译方法,欢迎持续关注!如果你觉得对你有用的话,麻烦帮忙点个赞。...在Linux下进行C语言编程的学习可能会增加学习的成本,但是从长远来看仍然是有必要的。...若不想安装Linux系统,也想适应一下Linux环境,则可参考往期笔记:【C语言笔记】Windows下体验Linux环境。

12.5K10

【专业技术第七讲】linux下如何编译C语言?

解决方案: 我们来简单普及一下,让大家不盲从请看以下 C语言的编译一般有三个步骤: 预编译: gcc -E -o a.e a.c 预编译a.c文件,生成的目标文件名为a.e 预编译就是将include包含的头文件内容替换到...GCC编译器的基本选项如下表: 类型 说明 -E 预处理后即停止,不进行编译、汇编及连接 -S 编译后即停止,不进行汇编及连接 -c 编译或汇编源文件,但不进行连接 -o file 指定输出文件file...C语言的include头文件 include是要告诉编译器,包含头文件 在C语言中,任何的库函数调用都需要包含头文件 头文件也相当于一个文档声明 如果把main函数放在第一个文件中,而把自定义函数放在第二个文件中...当一个文件(A.c文件)依赖于头文件(b.h)时,如果b.c编译之后形成的b.o文件重新编译后,a.o的文件不需要重新编译 可以极大降低手工复制,粘贴的错误几率 头文件的注意事项: ,表示让C...语言编译器在系统目录(即gcc编译器的include目录下)下寻找相关的头文件 “头文件”,表示让C语言编译器在用户当前目录下寻找相关的头文件 如果是使用了C语言库函数的需要的头文件,那么一定是#include

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

    在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.8K20

    Hello World背后的故事:如何在Linux上编译C语言程序

    C语言的经典程序“Hello World”并不难写,很多朋友都可以闭着眼将它写出来。那么编译一个“Hello World”到底经历了怎样的过程呢?...GCC最初名为GNU C Compiler,当时它只是一款C语言的编译器,不过随着后续迭代,它支持C++、Fortran、Go等语言,GCC也因此成为一个编译器集合。...GCC有以下特点: GCC支持的编程语言多。比如,g++是C++编译器,gfortran是Fortran编译器。 GCC支持的硬件全。...综上,GCC在Linux操作系统占有举足轻重的地位。 好,我们开始了解一下如何使用GCC编译hello.c文件。...对于我来说,超出我以往知识范畴的点包括:如何链接、静态链接和动态链接、main()之前操作系统和编译器所做的工作等等。

    1.9K11

    叙述 C语言编译

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

    1.8K11

    C语言编译过程

    如果用一张图来表示: image.png 编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序...C源程序头文件-->预编译处理(cpp)-->编译程序本身-->优化程序-->汇编程序-->链接程序-->可执行文件 1.编译预处理 读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理 [...如数字、字符串、变量的定义,以及C语言的关键字,如main,if,else,for,while,{,},+,-,*,\,等等。...后一种类型的优化同机器的硬件结构密切相关,最主要的是考虑是如何充分利用机器的各个硬件寄存器存放的有关变量的值,以减少对于内存的访问次数。...4.汇编过程 汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程。对于被翻译系统处理的每一个C语言源程序,都将最终经过这一处理而得到相应的目标文件。

    1.9K20

    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”,但是编译过程只是把源文件翻译成二进制而已,这个二进制还不能直接执行,这个时候就需要做一个动作,将翻译成的二进制与需要用到库绑定在一块。...-fPIC file1.c -c //这一步生成file1.o gcc -shared file1.o -o libtest.so

    1.9K20

    【C语言】编译链接

    前言 这是我自己学习C语言的第八篇博客总结。后期我会继续把C语言学习笔记开源至博客上。...上一期笔记是关于C语言的自定义类型,没看的同学可以过去看看:【C语言】自定义类型-CSDN博客https://blog.csdn.net/hsy1603914691/article/details/142288412https...翻译环境是由编译和链接两个过程组成。 2. 编译过程又可以分为预处理、编译、翻译三个过程。 翻译过程 1. ⼀个C语言的项目中可能有多个.c文件⼀起构建。 2....多个.c文件单独经过编译器,编译处理生成对应的目标文件。(在Windows环境下的目标文件的后缀是.obj,Linux环境下目标文件的后缀是.o) 3....编译过程 就是将预处理后的文件进行⼀系列的: 词法分析 、 语法分析 、 语义分析及优化 ,生成相应的 汇编代码文件 。(将 C语言代码 转化成 汇编代码 ) 词法分析 1.

    4100

    【C语言】预编译

    ~2021博客之星TOP100~2022博客之星TOP63~周榜159 ⌁ 总榜751~ 本文由 謓泽 原创 CSDN首发 如需转载还请通知⚠ 个人主页-謓泽的博客_CSDN博客  系列专栏-【C】...printf("%s\n", __FUNCTION__); //在vs上不支持STDC printf("%d\n",__STDC__) return 0; } 运行结果 main.c...在这里我们先举出第②个例子↓ #include int main(void) { #ifdef PRINT printf("hello C"); #endif } 运行结果如下↓...C ​ 常见条件编译指令 #if指令 该指令检测表达式值是否为真。...有的是为了进行一个版本之间的维护的,例如:有商业版和免费版等...当然我们还有可能使用条件编译完成其它的事情。 ⒉条件编译如何使用? 在上述条件编译讲解当中我们也说过的,这里就不在描述了。

    87810

    【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

    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 (CentOS) gdb -v 查看gdb是否安装成功 安装LLDB调试器(暂时不写) 大多数电脑还是用GDB作为调试器的,一般只有MAC使用且内置LLDB,暂时先不写这个 安装g++编译器...,int *b); VimPlus如图所示: g++ -g main.cpp func.cpp -o out 我们详细描述一下这条指令的执行过程 g++ main.cpp 相当于g++ -c

    22.8K50

    初学C语言,如何选择合适的编译工具

    什么是编译器 编译器(compiler)是一种计算机程序,它会将某种编程语言写成的源代码(原始语言)转换成另一种编程语言(目标语言)。...有哪些常见的用于C语言的编译器和集成开发环境(IDE) 编译器: 1.MSVC(Microsoft Visual C++ Compiler) MSVC是由微软公司开发的C语言编译器,它是Windows平台上最常用的编译器之一...兼容性:MSVC对标准C语言和C++语言的支持相对较好,同时也提供了一些扩展功能。...4.Clang+LLVM Clang是由苹果公司开发的C语言编译器前端,LLVM是一个开源编译器基础设施项目,Clang使用LLVM作为其后端。...注 有许多人喜欢去探索使用Visual Studio Code,其实这只是一款编辑器,本身没有编译器的功能,因此它本身也不是一款C语言的编译器,但是它有丰富的插件功能,可以配成一个用于执行C语言程序的编译器

    14710

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

    c编译器-c语言的编译器是干什么用的   本人不才,仅就个人意见谈谈:   1。...c语言编译器哪个好?   g++,icc.   ...-c++ source file,在头部加上   #   #   然后就可以编译c语言写的了   C++编程软件   这个永远没有统一的标准。   ...补充:64位机跑vista加虚拟机应该没问题,不知道你机器配置如何.如果配置真不行的话,也没办法啊.目前的一些编译器对vista支持不够好.这是我在博客里面写的,只是代表个人观点噢   现在估计给你钱,...有一些信息学竞赛,如较正规的ACM比赛,都在Linux系统上,采用的是gcc编译器,这个时候你就必须得熟悉这个编译器了。

    7.1K50

    【C语言】C语言 4 个编译过程详解

    C语言的编译过程涉及几个关键步骤、概念和细节,每个步骤都有助于将人类可读的源代码转换为可执行的机器码。以下是详细的解释和示例:一、什么是编译?编译是将源代码转换为目标代码的过程。...编译:mov eax, 42概念:编译器 (gcc, clang) 将预处理后的源代码翻译成特定于目标体系结构的汇编语言。细节:执行词法分析、语法分析、语义分析和优化。...hex 和 .bin 文件通常不是C语言编译过程的直接产物,而是在嵌入式系统开发中常见的文件格式,用于存储程序或数据的二进制表示。...这些文件通常是在程序已经编译、链接并生成了可执行文件之后,通过特定的工具或者转换过程生成的。因此,它们不属于C语言编译过程的标准阶段,但是在嵌入式开发中是非常常见的文件格式。....编译:将C源代码转换为汇编语言。汇编:将汇编指令转换为机器码。链接:将机器码与标准库函数(如 printf)结合,生成最终的可执行文件。

    83110

    C语言——编译和链接

    前言 在ANSIC的任何⼀种实现中,存在两个不同的环境:编译环境和执行环境。 编译环境:C语言代码对于我们程序员来说是易于识别和理解的,但对于计算机来说就是天书。...在一个项目中可能有多个.c的源文件,多个.c文件单独经过编译器,编译处理后生成目标文件。...(在Windows环境下的目标文件的后缀是 .obj ,Linux环境下目标文件的后缀是.o) 多个目标文件和链接库一起经过链接器处理后生成可执行程序。...编译 编译又可拆分为3个过程:预处理、编译、汇编 预处理 在预处理阶段,源文件和头文件会被处理成为.i为后缀的文件。 此阶段主要处理那些源文件中#开始的预编译指令。...汇编的命令如下:gcc -c test.s -o test.o 链接 我们的源代码经过编译以后,生成目标文件(.obj)的中间文件(临时文件)。

    9910

    c语言编译和链接

    其实翻译环境是由编译和链接两个⼤的过程组成的,⽽编译⼜可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程。...平时我们写的代码是.c类型的,当经过翻译环境,就变成了.exe类型的可执行程序,就可以直接运行了, 2.1 预处理(预编译) 首先预处理要把源码中的宏定义先进行解读,将所有的#define删除,并展开所有宏定义...⽐如: 在⼀个C的项⽬中有2个.c⽂件( test.c 和 add.c ),代码如下: 对应的test.c和add.c会被编译成一个tesst.o和一个add.o,这些都是中间文件,经过最后的链接,将几个中间文件链接成一个可执行程序...我们在 test.c ⽂件中每⼀次使⽤ Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地址,但是由于每个⽂件是单独编译的,在编译器编译 test.c 的时候并不知道 Add...前⾯我们⾮常简洁的讲解了⼀个C的程序是如何编译和链接,到最终⽣成可执⾏程序的过程,其实很多内部的细节⽆法展开讲解。

    7210

    【C语言】编译和链接

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

    8810

    【C语言】编译与链接

    前言 我们想一个问题,我们写的C语言代码都是文本信息,电脑能直接执行c语言代码吗?...肯定不能啊,计算机能执行的是二进制指令,所以将C语言转化为二进制指令需要一段过程,这篇博客讲一下编译与链接,来一起探讨C语言是如何转化为二进制指令的。...一个C语言的项目中可能有多个 .c 文 件一起构建,那多个 .c 文 件如何生成可执行程序呢? • 多个.c文件单独经过编译器,编译处理生成对应的目标文件。...如果再把编译器展开成3个过程,那就变成了下面的过程: 2.1 预处理(预编译) 在linux操作系统gcc环境下 在预处理阶段,源文件和头文件会被处理成为 .i 为后缀的文件。...结束语 本篇博客总结了编译和链接涉及C语言的有关知识,其实很多内部的细节无法展开总结。

    11910
    领券