gyh2002
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2005-03-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1814回复:6

有关makefile的问题!

楼主#
更多 发布于:2003-02-19 22:22
在编写makefile文件中,给程序的头文件指定一个路径,如下:
INCLUDE= -I/usr/src/linux-2.4.18-3/include/linux

可我在执行make之后,出现错误:
它并不从指定的路径找头文件,而是去/usr/include/linux下来寻找,指定的路径没起作用,这是为什么呢?怎么才能让这个起作用呢?

现有,我看有的makefile文件中这样写
***.o: ***.c /usr/include/linux/version.h
可在这个路径下并没有这个头文件呀,是不是写错了?
sunsetyang
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2007-03-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-19 22:57
在编写makefile文件中,给程序的头文件指定一个路径,如下:
INCLUDE= -I/usr/src/linux-2.4.18-3/include/linux

可我在执行make之后,出现错误:
它并不从指定的路径找头文件,而是去/usr/include/linux下来寻找,指定的路径没起作用,这是为什么呢?怎么才能让这个起作用呢?

现有,我看有的makefile文件中这样写
***.o: ***.c /usr/include/linux/version.h
可在这个路径下并没有这个头文件呀,是不是写错了?

Makefile里面指定只是用于决定的是对从属文件的依赖关系,以此来决定是否要重新编译的。真正起作用的是源代码文件内的include的关系。你可以显式的在你的源代码中注明要包含的头文件的完整路径。 还有一个比较简单的方法就是让/usr/include/linux成为到/usr/src/linux-2.4.18-3/include/linux的soft link。 首先mv /usr/include/linux xxx
然后
ln -sf /usr/src/linux-2.4.18-3/include/linux /usr/include/linux
[color=red]Optimization[/color] In Progress . . . Welcome to http://mail.ustc.edu.cn/~chyang/
gyh2002
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2005-03-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-20 22:53
Makefile里面指定只是用于决定的是对从属文件的依赖关系,
你在这里所说的从属文件是指什么呢?在makefile文件格式中的哪部分呢?

真正起作用的是源代码文件内的include的关系。你可以显式的在你的源代码中注明要包含的头文件的完整路径。
这种方法怎么做,就是在源代码中如何写呢?

这种指定路径的方式不能在makefile中做到吗?

你说这种软连接,可我要的真正路径是/usr/src/linux-2.4.18-3/include/linux ,我并不需要/usr/linux/include这个路径呀!而是系统要从这个路径来寻找程序的头文件!我的想法是让系统能从/usr/src/linux-2.4.18-3/include/linux 来寻找头文件!

[编辑 -  2/20/03 by  gyh2002]

[编辑 -  2/20/03 by  gyh2002]
letree
驱动牛犊
驱动牛犊
  • 注册日期2002-08-04
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-27 13:29
用类似以下的格式来指定可搜索的头文件路径

.c.o:$.c
$(CC) $(CFLAGS)  $(INCLUDE) -c  $*.c
gyh2002
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2005-03-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-03-01 02:18
用类似以下的格式来指定可搜索的头文件路径

.c.o:$.c
$(CC) $(CFLAGS)  $(INCLUDE) -c  $*.c
 


你这种写法怎么会指定可搜索的头文件呢?能解释一下吗?
sunsetyang
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2007-03-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-03-03 00:59
***.o: ***.c /usr/include/linux/version.h
.o:后面都是从属文件
Makefile里面指定只是用于决定的是对从属文件的依赖关系,
你在这里所说的从属文件是指什么呢?在makefile文件格式中的哪部分呢?

真正起作用的是源代码文件内的include的关系。你可以显式的在你的源代码中注明要包含的头文件的完整路径。
这种方法怎么做,就是在源代码中如何写呢?

这种指定路径的方式不能在makefile中做到吗?
不可以
 你说这种软连接,可我要的真正路径是/usr/src/linux-2.4.18-3/include/linux ,我并不需要/usr/linux/include这个路径呀!而是系统要从这个路径来寻找程序的头文件!我的想法是让系统能从/usr/src/linux-2.4.18-3/include/linux 来寻找头文件!
  因为编译的时候只有在系统include内找不到的文件才会用后面指定的部分。
[编辑 -  2/20/03 by  gyh2002]

[编辑 -  2/20/03 by  gyh2002]
[color=red]Optimization[/color] In Progress . . . Welcome to http://mail.ustc.edu.cn/~chyang/
jasonx
驱动牛犊
驱动牛犊
  • 注册日期2002-11-30
  • 最后登录2005-12-17
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-03-12 11:58
在make中用CFLAGS来指定include的路径,如:
CFLAGS = -I/usr/src/linux-2.4.18-3/include -O -Wall
试试吧 :cool:
游客

返回顶部