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/ ...
随机推荐
- android studio 慢的问题
转自:http://www.jianshu.com/p/e1c0b46e317c 在使用Android studio的时候常常遇到这样的问题,从github或是其他地方导入项目,Android stu ...
- Mine_hibernate
1. __z知识点\整理_归纳 ==> "ZC_归纳.txt" 和 "ZC_归纳__12_用Eclipse开发hibernate.txt" 2.
- 用纯css写一个常见的小三角形
.test{ margin:50px auto; width: 0; height: 0; overflow: hidden; border-width: 10px; border-color: #0 ...
- spring:设置映射访问路径 或 xml配置访问路径 (spring mvc form表单)
项目hello, 在src/main/java下面建一个目录: charpter2 一.xml配置访问路径 web.xml <web-app> <display-name>Ar ...
- 扫描局域网中Gogs服务器(ruby)
scanGogs.rb #!/usr/bin/env ruby require 'net/http' require 'thread' require 'english' # config CONFI ...
- Light oj 1074 spfa
https://vjudge.net/problem/LightOJ-1074 首先吐槽一个单词,directional是有方向的,undirectional是无向的,这个unidirectional ...
- node-wechat 微信推送消息
https://github.com/nswbmw/node-wechat/blob/master/index.js
- MS SQL GUID
(转自:http://blog.csdn.net/maonongwu/article/details/6327093) GUID介绍 GUID(Global unique identifier)全局唯 ...
- 使用VS自带的工具分析.NET程序的性能
(转自:http://www.cnblogs.com/DebugLZQ/archive/2012/07/10/2585245.html) 这篇博文给大家分享的是,如何使用VS自带的性能分析工具来分析我 ...
- LeetCode OJ:Permutations(排列)
Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...