Simulation World(模拟小窝)分享 http://blog.sciencenet.cn/u/WTianSD Motivation, Persistence, Focus, Imagination; Life and Research;

博文

Makefile学习笔记【1】

已有 2725 次阅读 2015-1-18 20:41 |个人分类:模拟技术|系统分类:科研笔记| makefile

一.程序的编译和链接

1.编译是把源文件生成中间代码文件,一般是*.o文件,如果中间文件过多,一般要给中间目标文件打包,生成*.a文件。编译时,编译器一般只检查语法问题,头文件路径等。


2.链接:把.o或.a文件链接在一起,主要是链接函数和全局变量,生成可执行.out文件。


3. Makefile是告诉make命令,需要如何 编译和链接


4.makefile规则:

-------------------------------------------------------------------------------

target...  : prerequisites ...  [目标文件,如*.o: *.cpp,*.h,生成目标所需要文件]

command                          [生成所调用的命令,如g++ *.cpp]

简单的makefile一般是上面两行,一起出现

-------------------------------------------------------------------------------

5.简单例子:

----------------------------------------------------------------------

MDsimulation : main.o  intergate.o particle.o, force.o 【链接生成目标文件】

g++ -o MDsimulation  main.o  intergate.o particle.o, force.o


main.o : main.cpp  defs.h  【编译生成中间文件】

g++ -c main.cpp


intergate.o: intergate.cpp intergate.h

g++ -c intergate.cpp


particle.o : particle.cpp particle.h

g++ -c particle.cpp


force.o : force.cpp force.h

g++ -c force.cpp


clean:                【make clean,删除中间文件】

rm MDsimulation main.o intergate.o force.o particle.o [如prerequisites比较多,可以用 反斜杠换行]

--------------------------------------------------------------------

5.执行规则:


6.使用变量【当要生成的中间文件多时,上面方法明显繁琐】

------------------------------------------------------------------

例:

object = main.o intergate.o force.o particle.o


MDsimulation : $(object)

g++ -o MDsimulation  $(object)

...

...

...

clean :

rm $(object)

---------------------------------------------------------------


7. 让make自动推导,

make 由.o可以直接推导出.cpp,这样 .o:后的同名.cpp可以省略,g++一行也可以省略。



https://blog.sciencenet.cn/blog-798373-860654.html

上一篇:LAMMPS- Fix langevin 使用注意
下一篇:LAMMPS 学习 -(入门)辅助论坛开通
收藏 IP: 112.87.159.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-23 12:45

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部