Linux下GCC和Makefile实例(从GCC的编译到Makefile的引入)
一、确认已经装好了GCC和Make的软件包
可以使用whereis命令查看:

如果whereis gcc和whereis make命令有结果,说明安装了这两个软件,可以继续往下做。
二、使用GCC编译运行一个HelloWorld程序(只涉及单个文件)
可以在任何一个目录编写C程序然后编译运行,我这个实例在自己主目录进行:

然后就进入了编写程序的界面:

按下键盘”i”进入编辑界面,然后输入程序:

按ESC(进入命令行模式),然后输入”:wq”,冒号表示开始输入命令,字母w代表保存文件,字母q代表退出编辑器:

按回车退出vim编辑器,退回到终端,以下是之后的编译运行截图:

三、使用GCC编译运行一个多文件程序(包含主程序和子程序)
这里我们要写两个C程序文件,一个文件里面写个被调函数,另外一个文件中main函数调用第一个文件的函数,如下所示:

ex_display.c的代码如下,同样的写完后ESC然后输入:wq退出:


输入如下的main函数代码:

然后保存退出,如下是编译运行过程:

四、使用Makefile解决多文件编译运行的问题
正如上节的红框框里面所叙述,如果一个程序涉及的文件很多的话,每个都得写出来,很是麻烦,所以Makefile就出现了,请看教程:


进入makefile的编辑界面后,输入如下内容:

然后保存退出,运行make命令:


五、Makefile和shell script方法的对比
有人说,我把之前的所有命令,全写到shell script里面,不就达到Makefile的效果了,没错确实最终效果是相同的,但是Makefile却有这些好处:
- 简化编译执行的命令(并没有gcc –c的过程)
- 一次make后,下次只会编译改动的文件,其它的文件不会再编译了
其它还有一些优点,不过这第二个优点,对于大型项目来说,好处太大了!
Linux下GCC和Makefile实例(从GCC的编译到Makefile的引入)的更多相关文章
- [编译] 7、在Linux下搭建安卓APP的开发烧写环境(makefile版-gradle版)—— 在Linux上用命令行+VIM开发安卓APP
April 18, 2020 6:54 AM - BEAUTIFULZZZZ 目录 0 前言 1 gradle 安装配置 1.1 卸载系统默认装的gradle 1.2 下载对应版本的二进制文件 1.3 ...
- Windows/Linux下引用jar包,并用javac/java编译运行
Windows/Linux下引用jar包,并用javac/java编译运行,有需要的朋友可以参考下. 1> Windows 假设要引用的jar放在D:/test目录下,名字为t1.jar, ja ...
- Linux下的C的开发之GCC的初级使用
<span style="font-family: Arial, Helvetica, sans-serif; "><span style="white ...
- Linux下的Make命令实例详解
众所周知在Linux系统下的make 命令是系统管理员和程序员用的最频繁的命令之一.管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题.下面这 篇文章我们将用一 ...
- [编译] 3、在Linux下搭建51单片机的开发烧写环境(makefile版)
星期二, 10. 七月 2018 01:01上午 - beautifulzzzz 一.SDCC(Small Device C Compiler)编译环境搭建 SDCC是一个小型设备的C语言编译器,该编 ...
- [编译] 8、在Linux下搭建 stm8 单片机的开发烧写环境(makefile版)
目录 一.SDCC(Small Device C Compiler)编译环境搭建 1.1.下载 1.2.编译 1.3.测试 二.Hex2Bin+命令行烧写工具配置使用 2.1.下载工具安装配置 2.2 ...
- linux下安装redis组件报错-gcc报错
报错如图: 1.解决办法 先安装gcc插件.删除redis解压后文件.重新解压
- [编译] 5、在Linux下搭建安卓APP的开发烧写环境(makefile版)—— 在Linux上用命令行+VIM开发安卓APP
星期三, 19. 九月 2018 02:19上午 - BEAUTIFULZZZZ 0)前言 本文不讨论用IDE和文本编辑器开发的优劣,是基于以下两点考虑去尝试用命令行编译安卓APP的: 了解安卓APP ...
- linux 下zip的用法实例
zip命令可以用来将文件压缩成为常用的zip格式.unzip命令则用来解压缩zip文件. 1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip: # zip -r yasuo ...
- Kali Linux下安装配置ProFTPD实例
1.安装ProFTPD 在ftp://ftp.proftpd.org/下能够找到官方公布的各个ProFTPD版本号,本人使用ftp://ftp.proftpd.org/historic/source/ ...
随机推荐
- 解决com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes异常
错误截图: 解决方法: 用root进入mysql终端,执行以下命令: alter database hive character set latin1;
- windows 环境下安装python MySQLdb
使用Python访问MySQL,需要一系列安装 Linux下MySQLdb安装见 Python MySQLdb在Linux下的快速安装 http://blog.csdn.NET/wklken/arti ...
- 开发中Dialog多弹窗管理
随着项目的不断迭代,加上产品经理大法(这里加一个弹窗提示,这里加一个引导….)各种弹窗在应用启动时候需要展示, 然而它们出现的时机还有可能重叠.我勒个擦...有没有一种优(tou)雅(lan)的方式来 ...
- Netty原理
1. Netty简介Netty是一个高性能.异步事件驱动的NIO框架,基于JAVA NIO提供的API实现.它提供了对TCP.UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都 ...
- fiddler之使用教程(一)
一. 什么是fiddler&它可以做什么 fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一.它能够记录客户端和服务器之间的所有HTTP请求,可以针对特定 ...
- Html工具类
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServletRespons ...
- Java多线程编程总结
Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调 ...
- Ceph配置项动态变更机制浅析
转自:https://www.ustack.com/blog/ceph%e9%85%8d%e7%bd%ae%e9%a1%b9%e5%8a%a8%e6%80%81%e5%8f%98%e6%9b%b4%e ...
- Flask安装配置
倒腾了一下午了,还是不太顺利,顺便记录一下. 硬件环境:win8.1 64位 + python2.7.9 32位 安装easy_install 需要先下载ez_setup.py(需要复制该链接中的内容 ...
- Struts06---通配符的使用
01.创建对应的login.jsp页面 <%@ page language="java" import="java.util.*" pageEncodin ...