Remake正在跳过我想要调试的shell命令

时间:2015-11-05 19:10:26

标签: bash shell makefile gnu-make

我遇到的问题与我的炮轰方式有关。我正在使用Bash,但是在ARM64 Chroot中使用Debian Sid(不稳定)。 (我这样做是因为它是我们的Debian软件包维护者。否则,我会逃避不稳定的,流行的东西)......

# echo $0
/bin/bash

我的shell命令之一似乎是创建-o2而不是-O2。我怀疑在炮击时内存正在被破坏,而-o2只是一种症状。

# make cryptlib.o
g++ -DNDEBUG -g3 -o2 -pipe -c cryptlib.cpp

这是Remake下的相同命令:

# remake -X -f GNUmakefile cryptlib.o
GNU Make 3.82+dbg0.9
Built for aarch64-unknown-linux-gnu
Copyright (C) 2010  Free Software Foundation, Inc.
...
Updating goal targets....
  File `cryptlib.o' does not exist.
  Must remake target `cryptlib.o'.
Invoking recipe from GNUmakefile:449 to update target `cryptlib.o'.
##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
g++ -DNDEBUG -g3 -o2 -pipe -c cryptlib.cpp
##<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
++ (/cryptopp-git/GNUmakefile:448)
cryptlib.o
remake<0> 

可以看出,我感兴趣的东西已经过去了。 Line 449非常无趣。它只是一个标准配方,使用CXXCXXFLAGS$<

不幸的是,我真的没有看到我应该做些什么来调试这个问题。根据{{​​3}},有一个 step ,但它并没有真正告诉我如何使用它。当我尝试将其添加到命令时:

remake -X step -f GNUmakefile cryptlib.o

结果是 No rule to make target 'step'

如何使用Remake调试此makefile?甚至没有它?

1 个答案:

答案 0 :(得分:1)

makefile中的配方不涉及设置该变量的值。

这是一个make变量。它通过make本身(以及makefile的make-level内容)设置为make-parse时间。

我在链接的GNUMakefile中看不到 -o2 -g3这两者中的任何内容make-run编译命令。

该makefile确实包含GNUMakefile.deps文件(如果存在)。我想这可能有错误的价值。你有一个GNUMakefile.deps文件吗?

grep是否在源目录中的任何位置找到-g3或-o2? (如果还有其他包含的makefile?)

make的最后一个位置可能是获取此值的过程环境(因为CXXFLAGS是使用?=运算符定义的。)

您的环境中是否错误地定义了CXXFLAGS