我遇到的问题与我的炮轰方式有关。我正在使用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非常无趣。它只是一个标准配方,使用CXX
,CXXFLAGS
和$<
。
不幸的是,我真的没有看到我应该做些什么来调试这个问题。根据{{3}},有一个 step
,但它并没有真正告诉我如何使用它。当我尝试将其添加到命令时:
remake -X step -f GNUmakefile cryptlib.o
结果是 No rule to make target 'step'
。
如何使用Remake调试此makefile?甚至没有它?
答案 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
?