|||
一.程序的编译和链接
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++一行也可以省略。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-27 06:36
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社