文章更新于:2020-03-23

一、手动编译链接单个C源文件

1、创建C源文件

注:此处创建名为 hello.c 的源文件。

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

2、编译源文件

gcc -c hello.c

3、生成可执行文件

注:此处的 result 为你想要输出的可执行文件名。

gcc -o result hello.o

二、手动编译链接多个C源文件

1、创建两个C源文件

注:此处创建名为 hello.chello2.c 的两个源文件。

#include<stdio.h>
int main()
{
printf("hello,world!\n");
testfun(); //调用另一个源文件中的函数
return 0;
}
#include<stdio.h>
void testfun()
{
printf("\nThis is in hello2!\n");
}

2、编译两个源文件

注:此处也可使用 gcc -c *.c 来编译多个C源文件。

gcc -c hello.c hello2.c

3、生成可执行文件

gcc -o result hello.o hello2.o

三、使用Makefile自动编译链接

1、创建C源文件

注1:此处延续使用上述例子的两个C源文件。

注2:创建名为 hello.chello2.c 的两个源文件。

#include<stdio.h>
int main()
{
printf("hello,world!\n");
testfun(); //调用另一个源文件中的函数
return 0;
}
#include<stdio.h>
void testfun()
{
printf("\nThis is in hello2!\n");
}

2、创建Makefile文件

注1:这里的hello.ohello2.o 是要创建的两个目标文件。

注2:result 为要输出的可执行文件名。

注3:gcc行前面的空白是Tab键生成的。

main: hello.o hello2.o
gcc -o result hello.o hello2.o -lm

3、执行make生成可执行文件

4、加上参数清理中间文件(可选)

注1:如果不想要中间产生的*.o文件,可在Makefile中加入清理参数。

注2:最后一行也可以写成 rm -f *.o

main: hello.o hello2.o
gcc -o result hello.o hello2.o -lm
clean:
rm -f hello.o hello2.o

四、Enjoy!

Linux利器:使用 gcc 编程C程序的更多相关文章

  1. Linux下使用gcc编程初体验

    近期刚刚放弃了Windows,投入了Ubuntu 的怀抱.今天就拿一个小小的案例来做一下C语言的编译和运行流程.额,顺便说一句.本文适合那些Linux新手,不适合老鸟哈. 看完本文可以学到什么? 程序 ...

  2. Linux 利器- Python 脚本编程入门(一)

    导读 众所周知,系统管理员需要精通一门脚本语言,而且招聘机构列出的职位需求上也会这么写.大多数人会认为 Bash (或者其他的 shell 语言)用起来很方便,但一些强大的语言(比如 Python)会 ...

  3. LINUX下C语言编程基础

    实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...

  4. Linux下的C编程实战

    Linux下的C编程实战(一) ――开发平台搭建 1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性.而近年来, Linu ...

  5. Linux基础与Linux下C语言编程基础

    Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...

  6. Linux守护进程的编程实现

    Linux 守护进程的编程方法 守护进程(Daemon)是执行在后台的一种特殊进程.它独立于控制终端而且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种非常实用的进程.Linux的大多数s ...

  7. Linux 应用层的时间编程【转】

    转自:https://blog.csdn.net/chinalj2009/article/details/21223681 浅析 Linux 中的时间编程和实现原理,第 1 部分: Linux 应用层 ...

  8. Linux下C语言编程基础学习记录

    VIM的基本使用  LINUX下C语言编程 用gcc命令编译运行C语言文件 预处理阶段:将*.c文件转化为*.i预处理过的C程序. 编译阶段:将*.i文件编译为汇编代码*.s文件. 汇编阶段:将*.s ...

  9. 【转】Linux基础与Linux下C语言编程基础

    原文:https://www.cnblogs.com/huyufeng/p/4841232.html ------------------------------------------------- ...

随机推荐

  1. jupyternotebook安装

    本篇阅读目录 一.Jupyter notebook环境安装 二.爬虫介绍 回到顶部 一.Jupyter notebook环境安装 1.Anaconda 以及 安装步骤 Anaconda指的是一个开源的 ...

  2. css报模块没找到 分析思路 从后往前找,先定位最后blue.less 解决:iview升级4.0 css没改导致编译不过去

    E:\xxx\xxx\xxx\../../../../../../../E:/xxx/xxx/xxx/node_modules/_iview@3.5.4@iview/src/styles/common ...

  3. Mol Cell Proteomics. | Identification of salivary biomarkers for oral cancer detection with untargeted and targeted quantitative proteomics approaches (解读人:卜繁宇)

    文献名:Identification of salivary biomarkers for oral cancer detection with untargeted and targeted qua ...

  4. Topshelf+Quartz3.0基于控制台应用程序快速开发可调度windows服务

    1.TopShelf TopShelf是一个开源的跨平台的宿主服务框架.可通过.Net Core/.Net Framwork控制台应用程序快速开发windows服务,更加便于服务调试. 本文基于.Ne ...

  5. IdentityServer4源码解析_1_项目结构

    目录 IdentityServer4源码解析_1_项目结构 IdentityServer4源码解析_2_元数据接口 IdentityServer4源码解析_3_认证接口 IdentityServer4 ...

  6. 分布式专题——详解Google levelDB底层原理

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是分布式专题的第10篇文章,我们继续来聊聊LSMT这个数据结构. LSMT是一个在分布式系统当中应用非常广泛,并且原理直观简单的数据结构 ...

  7. 洛谷1541 乌鬼棋 dp入门

    题目链接:https://www.luogu.com.cn/problem/P1541 给定一个序列和一个操作序列,操作序列中只有1234四个数字,表示可以前进的步数,初始在1处,操作最后一定会全部用 ...

  8. 北京大学公开课《数据结构与算法Python版》

    之前我分享过一个数据结构与算法的课程,很多小伙伴私信我问有没有Python版. 看了一些公开课后,今天特向大家推荐北京大学的这门课程:<数据结构与算法Python版>. 课程概述 很多同学 ...

  9. JMX(Java Management Extension)学习

    目录 基本概念 MBean的种类 StandardMBean DynamicBean ModelMBean JMX的实现方式 StandardMBean的使用方法 JMX服务的访问方式 JMX--No ...

  10. 洛谷5026 Lycanthropy 差分套差分

    题目链接 https://www.luogu.com.cn/problem/P5026 题意 在一个长度为m的序列中,每次给一个下标x,和一个权值v,然后从x-v*3到x-v*2单调递增,从x-v*2 ...