新手学习记录1:makefile学习实践
2016-03-18 16:35
253 查看
这编辑器真难用,动不动就把前面的删了.
新手入门,高手请不吝赐教,自以为是的喷子请留情.
昨天,主要跟着ZLG的Linux开发教程学习了makefile的基本概念,和实际应用差距还比较大,在网上看了"阿波321--编写Makefile"之后,稍微找到了感觉,记录如下.
hello.c程序
#include<stdio.h>
#include "hello1.h"
int main(void)
{
myprintf1();
return 0;
}
hello1.c程序
#include<stdio.h>
#include"hello1.h"
void myprintf1(void)
{
printf("myprint %d!\n",1);
}
hello1.h程序
#ifndef _HELLO_1_H
#define _HELLO_1_H
void myprintf1(void);
#endif
makefile程序
#
main: hello.o hello1.o
gcc -o main hello.o hello1.o
hello.o:hello.c hello1.h
gcc -c hello.c
hello1.o:hello1.c hello1.h
gcc -c hello1.c
make命令之后通过.
又把makefile程序的顺序进行了调整,编译无法通过,总是生不成hello1.o,
改变顺序的makefile程序
#
main: hello.o hello1.o
hello.o:hello.c hello1.h
hello1.o:hello1.c hello1.h
gcc -o main hello.o hello1.o
gcc -c hello.c
gcc -c hello1.c
万事总有规则,我没有搞清makefile的编译规则,所以上面的程序编译通不过.
从file最终的目标文件开始倒推,依次列出文件的依存关系,make在执行时:
(1)判断file可执行文件是否存在,若不存在,则执行命令行,向下寻找依存关系
(2)若file存在,则检查依靠文件,是否存在更新,若存在更新则执行命令行,若没有更新则给出提示:
make:'file' is up to date.
虽然道理如上所示,并不能完全理解透,还是现遵守规则吧.
新手入门,高手请不吝赐教,自以为是的喷子请留情.
昨天,主要跟着ZLG的Linux开发教程学习了makefile的基本概念,和实际应用差距还比较大,在网上看了"阿波321--编写Makefile"之后,稍微找到了感觉,记录如下.
hello.c程序
#include<stdio.h>
#include "hello1.h"
int main(void)
{
myprintf1();
return 0;
}
hello1.c程序
#include<stdio.h>
#include"hello1.h"
void myprintf1(void)
{
printf("myprint %d!\n",1);
}
hello1.h程序
#ifndef _HELLO_1_H
#define _HELLO_1_H
void myprintf1(void);
#endif
makefile程序
#
main: hello.o hello1.o
gcc -o main hello.o hello1.o
hello.o:hello.c hello1.h
gcc -c hello.c
hello1.o:hello1.c hello1.h
gcc -c hello1.c
make命令之后通过.
又把makefile程序的顺序进行了调整,编译无法通过,总是生不成hello1.o,
改变顺序的makefile程序
#
main: hello.o hello1.o
hello.o:hello.c hello1.h
hello1.o:hello1.c hello1.h
gcc -o main hello.o hello1.o
gcc -c hello.c
gcc -c hello1.c
万事总有规则,我没有搞清makefile的编译规则,所以上面的程序编译通不过.
从file最终的目标文件开始倒推,依次列出文件的依存关系,make在执行时:
(1)判断file可执行文件是否存在,若不存在,则执行命令行,向下寻找依存关系
(2)若file存在,则检查依靠文件,是否存在更新,若存在更新则执行命令行,若没有更新则给出提示:
make:'file' is up to date.
虽然道理如上所示,并不能完全理解透,还是现遵守规则吧.
相关文章推荐
- MyEclipse用Java语言连接Oracle数据库
- ASP.NET 4 and Visual Studio 2010
- Visual Studio的安装与单元测试
- [Angular 2] WebStorm - Managing Imports
- 是否联网以及热点问题
- android中用style简化布局文件
- chrome的渲染算法确实有点屌
- 对jquery.validate 的一些感悟
- Android的第一堂课,Activity生命周期
- 模板的声明和实现为何要放在头文件中?
- 使用JDBC读取本地的Excel文件并批量更新数据
- Java集合框架:Arrays工具类
- Object-C @property 小结
- C和指针-- 1 & 2
- oracle学习笔记1-安装
- Tomcat迁移到weblogic的几个问题
- C++服务器(三):多平台的构思与Windows下的tcp_socket
- Java集合框架:Arrays工具类
- android错误总结
- 关于bootstrap datetimepicker位置显示错误的bug修复