当前位置:  技术问答>linux和unix

一个关于Makefile的问题

    来源: 互联网  发布时间:2015-11-06

    本文导语:  1  ifeq ($(KERNELRELEASE),) 2  3     KERNELDIR ?= /lib/modules/$(shell uname -r)/build 4     PWD := $(shell pwd) 5 6  else 7     obj-m := hello.o 8  endif 9  10  11 .PHONY: modules modules_install clean 12 13 modules: 14 $(MAKE) -C $(KERNELDIR)...

1  ifeq ($(KERNELRELEASE),)

3     KERNELDIR ?= /lib/modules/$(shell uname -r)/build
4     PWD := $(shell pwd)
5
6  else
7     obj-m := hello.o
8  endif

10 
11 .PHONY: modules modules_install clean
12
13 modules:
14 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
15
16 modules_install:
17 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
18
19 clean:
20 rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

--------------------------------------------
以上是编译一个内核模块的Makefile,
据我实践发现第1行的条件是成立的,
但是我comment掉第7行后编译却不能生成所需文件。
第1行的条件成立,第7行的语句不是应该不起作用吗?
请高人做答。

|
呵呵,楼主想问题挺细.ldd3里P24作者这样说:

Once again, we are seeing the extended GNU make syntax in action. This makefile is
read twice on a typical build. When the makefile is invoked from the command line,
it notices that the KERNELRELEASE variable has not been set. It locates the kernel source
directory by taking advantage of the fact that the symbolic link build in the installed
modules directory points back at the kernel build tree. If you are not actually run-
ning the kernel that you are building for, you can supply a KERNELDIR= option on the
command line, set the KERNELDIR environment variable, or rewrite the line that sets
KERNELDIR in the makefile. Once the kernel source tree has been found, the makefile
invokes the default: target, which runs a second make command (parameterized in
the makefile as $(MAKE)) to invoke the kernel build system as described previously.
On the second reading, the makefile sets obj-m, and the kernel makefiles take care of
actually building the module.

|
ifeq、else和endif。ifeq的意思表示条件语句的开始,并指定一个条件表达式,表达式包含两个参数,以逗号分隔,表达式以圆括号括起。else表示条件表达式为假的情况。endif表示一个条件语句的结束,任何一个条件表达式都应该以endif结束。我不是太能理解你的参数意义。

    
 
 

您可能感兴趣的文章:

  • 求解makefile问题,makefile.conf的作用?
  • 请教根据Makefile.am自动生成Makefile的问题
  • Makefile使用遇到的问题!"Makefile:3:missing the separator.stop"在线等待.......
  • 关于makefile的问题。一个makefile如何生成两个可执行文件。
  • 亟待解决的问题!Makefile问题
  • 关于makefile文件的问题
  • makefile include的问题
  • linux中makefile大小写问题
  • 关于多层Makefile编译的问题
  • 初写MAKEFILE遇到问题,麻烦大家帮忙。
  • 多个Makefile合并的问题
  • 急!求助,关于makefile的问题
  • 关于makefile 中NUL报错及遗漏“endif”的问题
  • 用mkmf生成makefile的问题
  • 一个 makefile 问题
  • 问一个Makefile的问题
  • 关于makefile的问题,回的请进
  • makefile 简单问题
  • makefile 1254-004问题
  • Makefile的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Makefile.in,Makefile.am,Makefile.bor应该怎么用?
  • makefile.am和makefile.in是什么文件,与makefile有什么联系吗?
  • 最近在学习linux C 看到了makefile部分,觉得makefile的语法很难理解,Makefile 的语法是不是shell语法?
  • 从网上载了个C++程序的源代码,包含38个.cpp和.h,还有makefile.in和makefile.am两个文件,但无configure和makefile.请问怎么编译?谢谢!
  • 有makefile.am,有 makefine.in 为什么就是没有Makefile?
  • makefile如何调用文件目录下的makefile
  • 怎麼樣使Makefile.in生成Makefile?
  • 【急!】一个程序里有好多文件夹里都有Makefile,如何找到最管用的makefile
  • 【makefile使用】请问怎样在shell中获取makefile的最终目标?
  • unix下面make makefile文件,提示“makefile is up-to-date",怎么办呀?
  • Makefile是如何输出执行的路径的,表示执行的是那个Makefile
  • 下的tar.gz源码里只有makefile.in和makefile.am
  • 一句 makefile 的解释 -- makefile 与 shel 结合
  • linux makefile error :Makefile:335: *** commands commence before first target。
  • [test@localhost ~]$ cat <makefile >catfile 跟cat > catfile <makefile是一样的吧?
  • 关于makfile,makefile.in, makefile.am. configure之间的关系
  • win32下编译Linux 下的项目(makefile.am和makefile.in)
  • make -f makefile 时提示 Make: Must be a separator on rules line 5. Stop. 为什么,makefile 如下
  • 请问如何写动态的Makefile,或是有什么好的Makefile写法?麻烦分享一下,谢谢
  • Makefile :scripts/Makefile.build:49: *** CFLAGS was changed in "/opt/zaptel-1.4.


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3