您的位置:首页 > 运维架构 > Linux

【Linux】 C编程之 makefile使用

2012-03-04 00:14 239 查看
一,示例

       四个文件:main.c;main.h;t_print.c;t_print.h

       makefile:写法1)   

main:main.o t_print.o
gcc main.o t_print.o -o main
main.o:main.c main.h
gcc -c main.c
t_print.o:t_print.c t_print.h
gcc -c t_print.c
clean:
rm  main.o t_print.o
        执行:make  或 make main

        删除中间文件: make clean

                


                      写法2)                      

main:main.o t_print.o
gcc main.o t_print.o -o main
main.o:main.c main.h
gcc -c main.c
t_print.o:t_print.c t_print.h
gcc -c t_print.c
       执行:make  或 make  main

                       写法3)

main:main.o t_print.o
gcc main.o t_print.o -o main
       执行:make  或 make  main

make 命令会自动推导 main.o的产生所需要的文件

                        写法4)

object=main.o t_print.o

main:$(object)
gcc $(object) -o main
clean:
rm  $(object)


  这里使用了变量,但是依赖关系显得有些不清楚。

  【特别注意】gcc 前面是 Tab空格键

二,make 执行过程

       1)make 在当前目录下找 "Makefile"或"makefile"的文件

       2)如果找到,则会找文件中第一个目标文件(target)。如上例子中main

       3)如果 main 命令的执行,依赖后面命令执行所产生的文件,则先执行后面命令

       4)当main 命令需要的文件生成完毕,则执行main 命令

三,细节

        1)可以使用其他的文件名作为makefile  如 Make.linux

                make -f  Make.linux    //-f  file 指定文件

        2)makefile 中还可以包含其他文件例如

                makefile:       

object=main.o t_print.o

main:$(object)
gcc $(object) -o main
clean:
rm  $(object)
include aa
                aa:
cleanmain:
rm main
               执行:make   cleanmain想当于执行  rm  main

           说明:make命令开始时,会把找寻include所指出的其他file,并把file中内容放置在当前位置

         3)makefile中某条命令前加上 "-"表示无论发生什么错误,都不要报错继续执行

              -rm  main.o  t_print.o // 可以写成通配符  rm   *.o

   

-----夜已经深了----未完待续-----

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息