makefile怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了makefile怎么写相关的知识,希望对你有一定的参考价值。

就是在redhat下怎么编写makefile?
不要介绍语法的
就是首先在哪个软件中编写makefile:是在VI中编写?还是在哪?
其次就是makefile文件的后缀是什么?

如果你想写 Makefile 的话,那么你只要用一个不将制表符过滤掉的文本编辑器就可以了,用 vi/vim 可以,用 emacs 可以,用其它的 geditor 也是可以的,只要是文本编辑器就可以了。你在 win 下也可以用记事本写 Makefile ,当然要确保你的系统已经安装了 make 了(最好了 GNU make)。Makefile 是不需要后缀的,也就是说 Makefile 的文件名就是 Makefile。
下面我给出一个我写的一个简单的 Makefile 给你参考一下吧:
# Makefile for 'kmp'
CC=gcc
CFLAGS=-g

kmp: kmpindex.o getnext.o main.o
$(CC) -o kmp kmpindex.o getnext.o main.o
kmpindex.o: kmpindex.c kmp.h
$(CC) -c kmpindex.c
getnext.o: getnext.c kmp.h
$(CC) -c getnext.c
main.o: main.c kmp.h
$(CC) -c main.c
clean:
rm -f *.o
# END
没有太多的注释,因为是用于小测试的。希望对你有所帮助
参考技术A 纯文本,任何一个编辑器都可以,比如vi,vim,emacs等等
makefile没后缀,文件名就是makefile或者Makefile
运行make工具时它会自动识别makefile文件
可以参考man手册,运行man make
参考技术B makefile随便用什么编写,文本编辑器就行,vi当然可以,后缀名是mak

makefile怎么写?

参考:https://blog.csdn.net/haoel/article/details/2886

 

一、GCC编译命令:gcc(选项)(参数)

  -o:指定生成的输出文件;

  -E:仅执行编译预处理;

  -S:将C代码转换为汇编代码;

  -wall:显示警告信息;

  -c:仅执行编译操作,不进行连接操作。

二、编译优化

  -O0:这个等级(字母“O”后面跟个零)关闭所有优化选项,也是CFLAGS或CXXFLAGS中没有设置-O等级时的默认等级。这样就不会优化代码,这通常不是我们想要的。 
  -O1:这是最基本的优化等级。编译器会在不花费太多编译时间的同时试图生成更快更小的代码。这些优化是非常基础的,但一般这些任务肯定能顺利完成。 
  -O2:-O1的进阶。这是推荐的优化等级,除非你有特殊的需求。-O2会比-O1启用多一些标记。设置了-O2后,编译器会试图提高代码性能而不会增大体积和大量占用的编译时间。 
  -O3:这是最高最危险的优化等级。用这个选项会延长编译代码的时间,并且在使用gcc4.x的系统里不应全局启用。自从3.x版本以来gcc的行为已经有了极大地改变。在3.x,-O3生成的代码也只是比-O2快一点点而已,

      而gcc4.x中还未必更快。用-O3来编译所有的软件包将产生更大体积更耗内存的二进制文件,大大增加编译失败的机会或不可预知的程序行为(包括错误)。这样做将得不偿失,记住过犹不及。在gcc 4.x.中使用-O3是不推荐的。 
  -Os:这个等级用来优化代码尺寸。其中启用了-O2中不会增加磁盘空间占用的代码生成选项。这对于磁盘空间极其紧张或者CPU缓存较小的机器非常有用。但也可能产生些许问题,因此软件树中的大部分ebuild都过滤掉这个等级的优化。使用-Os是不推荐的。

 

  参考: https://blog.csdn.net/misiter/article/details/7514428

三、常用的makefile自动化变量

  (1) [email protected] ——目标文件的名称;
  (2) $^ ——所有的依赖文件,以空格分开,不包含重复的依赖文件;
  (3) $< ——第一个依赖文件的名称。

 







以上是关于makefile怎么写的主要内容,如果未能解决你的问题,请参考以下文章

makefile中依赖关系如何写?

Makefile详解

makefile怎么写?

如何在linux下写makefile

linux 搭建stm32的makefile 怎么写

能不能麻烦编写一下makefile,math.h需要写进依赖关系么?谢谢!