博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
makefile常见问题
阅读量:4189 次
发布时间:2019-05-26

本文共 1022 字,大约阅读时间需要 3 分钟。

1) Makefile:6: *** missing separator. Stop. 

   报出来Makefile的第6行有缺少分隔符问题. 打开Makefile文件,找到第6行,发现是该行的命令
顶行写,没有用Tab键隔离.
   第六行行首加一个Tab键后问题解决.   注: 在makefile中,命令行要以tab键开头。
   可通过.RECIPEPREFIX来修改tab为其他符号,如:
   .RECIPEPREFIX  = >
   all: 
   > echo $$pwd
2) = 和 :=的区别
   我们可以使用这两个赋值符号用其它变量来给变量赋值。这两个赋值符号的效果不同。
   对=符号,为动态赋值。右侧变量不一定非要是已定义好的值,其也可以使用后面定义的值。如:
   foo = $(bar)
   bar = aaa
   all:
       echo $(foo)
   命令make all将打印出aaa。

   “:=”为静态赋值,不能用在当前代码之前还未定义的变量。如:

   foo := $(bar)
   bar := aaa
   all:
       echo $(foo)
   命令make all打印内容为空。

3)make: *** cur-dir: command not found 问题

   以下代码会导致如题的出错信息。
   all:
   ifeq (0, ${MAKELEVEL})
        cur-dir := $(shell pwd)
   endif

   原因: all之后的必须是可执行命令,不能定义变量。变量的定义可以放在all的前面。如:

   ifeq (0, ${MAKELEVEL})

        cur-dir := $(shell pwd)
   endif
   all:
   ...
   也可以用define,如:
   ifeq (0, ${MAKELEVEL})
     define cur-dir
   $(shell pwd)
     endef
   endif
   all:
   ...  
   注意:endef前面用空格,不能用tab键,否则可能会报出找不到endef。 

4) make: source: Command not found (Error 127) 问题

   在makefile使用了source aaa.cshrc命令,然后报出上述问题。原因是make默认使用/bin/sh shell, 该shell不支持source命令。在makefile中修改shell:

   ifeq($(shell uname),Linux)

        SHELL  := /bin/csh

  endif

转载地址:http://nusoi.baihongyu.com/

你可能感兴趣的文章
Hibernate和IBatis对比
查看>>
Spring MVC 教程,快速入门,深入分析
查看>>
Ubuntu Navicat for MySQL安装以及破解方案
查看>>
在C++中如何实现模板函数的外部调用
查看>>
HTML5学习之——HTML 5 应用程序缓存
查看>>
HTML5学习之——HTML 5 服务器发送事件
查看>>
mysql中用命令行复制表结构的方法
查看>>
hbase shell出现ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException
查看>>
解决Rhythmbox乱码
查看>>
豆瓣爱问共享资料插件发布啦
查看>>
kermit的安装和配置
查看>>
linux中cat命令使用详解
查看>>
java中的异常机制
查看>>
商务智能-基本方法-数据钻取
查看>>
openstack-instance-high-availability-Evacuate
查看>>
evacuate-instance-automatically
查看>>
pycharm常用设置(keymap设置及eclipse常用快捷键总结)
查看>>
关于在openstack的环境变量.bashrc自定自己简化命令
查看>>
Openstack Heat Project介绍(转)
查看>>
How to Perform an Upgrade from Icehouse to Juno(ice升级到juno)
查看>>