当前位置: 首页 > news >正文

linux多文件编译—makefile

说到linux下多文件编译。大多是c语言,因为linux内核以及许多的自由软件都是c语言编写的。当然还有c++语言,区别就是c语言使用gcc,而c++语言使用g++。那么本文以c语言为例讲解。c++那么就能融汇贯通了将gcc改为g++就好了。


1,单个文件的编译,比如有test.c    直接输入命令

#gcc test.c -o test

执行,直接输入


#./test


2,多个文件的编译,比如有main.c  address.h address.c 这三个文件,那么我们使用makefile多文件编译的方法是很方便的,如下

step1建立makefile文件

#gedit makefile&


step2编辑makefile文件,在makefiel文件中写入以下


mm:main.o address.o
       gcc main.o address.o -o mm
main.o:main.c address.c
       gcc main.c -c
address.o:address.c
       gcc address.c -c
clean:
       rm -fR *.o mm

对上边的代码做一个解释:

mm是我们生成的名字,这个不用管,就写mm就好了,后边也用不到。

第一行的意思是mm是由main.o address.o生成的

第二行的意思是mm是由main.o address.o通过gcc -o生成的。注意gcc的前面是一个tab键!!

第三行的意思是main.o是由main.c address.c生成的

第四行的意思是main.o是由main.c address.c通过gcc -c生成的。注意gcc的前面是一个tab键!!
第五行第六行不解释了,都一个意思。

第七行第八行,是执行make clean后需要执行的代码,在该处的意思是删除所有.o结尾的文件和mm文件。其中第八行的格式再强调一下,(首先是一个tab键,然后rm,然后空格,然后*,然后.,然后o),,看清楚是小写字母o别写错了。

step3使用make命令编译


#make -f makefile

step4如果你写的源代码有错误,此时会报错。那么修改源代码后,再次执行step3。直至通过

step5运行程序


#./makefile




完!

相关文章:

  • linux下,使用php将C扩展打包成.so文件补充——动态库
  • 安装第三方yum源
  • cannot find -lxxx
  • linux下的环境变量配置
  • nm命令
  • 错误解决:apachectl: line 78:  5160 段错误     $HTTPD -k $ARGV
  • 问题解决Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 38218371 bytes)
  • 数字信封详解
  • HTTP协议概述
  • SSL协议概述
  • ASN.1之tag
  • DER编码规则详解
  • RSA算法原理
  • 签名类型
  • ASN.1概述
  • SegmentFault for Android 3.0 发布
  • 3.7、@ResponseBody 和 @RestController
  • Android Studio:GIT提交项目到远程仓库
  • AngularJS指令开发(1)——参数详解
  • CSS魔法堂:Absolute Positioning就这个样
  • JS变量作用域
  • Objective-C 中关联引用的概念
  • Python3爬取英雄联盟英雄皮肤大图
  • SpiderData 2019年2月13日 DApp数据排行榜
  • SpringBoot几种定时任务的实现方式
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 工程优化暨babel升级小记
  • 关于Java中分层中遇到的一些问题
  • 蓝海存储开关机注意事项总结
  • 前端相关框架总和
  • 区块链技术特点之去中心化特性
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 白色的风信子
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​第20课 在Android Native开发中加入新的C++类
  • #vue3 实现前端下载excel文件模板功能
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (14)Hive调优——合并小文件
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (算法)求1到1亿间的质数或素数
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • ..回顾17,展望18
  • .gitignore
  • .java 9 找不到符号_java找不到符号
  • .Net CF下精确的计时器
  • .NET NPOI导出Excel详解
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • @Autowired注解的实现原理
  • @ConfigurationProperties注解对数据的自动封装
  • @SentinelResource详解
  • [Docker]五.Docker中Dockerfile详解