Compiler construction Makefile变量替换有时被忽略

Compiler construction Makefile变量替换有时被忽略,compiler-construction,makefile,cuda,Compiler Construction,Makefile,Cuda,编译一个支持CUDA的aircrack ng版本已经有一段时间没有修复错误了,因此需要进行一些修补才能大部分实现 基本上,make找不到这段代码的相关编译器(nvcc) 相关生成文件部分 如您所见,make似乎正在删除环境变量“CUDA_BIN” echo$CUDA\u BIN的输出 哪个nvcc的输出 我不是一个制造大师,所以如果我做了一些明显错误的事情,请原谅我 在尝试用完整路径硬编码nvcc标志后,该部分会编译,但当涉及到加密部分(涉及libssl)时,它找不到必要的库,并且以与上述类似的

编译一个支持CUDA的aircrack ng版本已经有一段时间没有修复错误了,因此需要进行一些修补才能大部分实现

基本上,make找不到这段代码的相关编译器(
nvcc

相关生成文件部分

如您所见,make似乎正在删除环境变量“CUDA_BIN”

echo$CUDA\u BIN的输出

哪个nvcc的输出

我不是一个制造大师,所以如果我做了一些明显错误的事情,请原谅我


在尝试用完整路径硬编码nvcc标志后,该部分会编译,但当涉及到加密部分(涉及libssl)时,它找不到必要的库,并且以与上述类似的方式,不会替换“CUDA_INSTALL_path”,即使它在环境中,这表明正在发生一些奇怪的事情。

在生成文件中依赖环境变量通常不是一个好主意。在makefile中显式设置值,或在调用中指定值(例如,
makecuda=…
)实际上是正确的方法

如果仍要使用环境中的值,我不知道makefile为什么不工作,但您可以尝试以下方法:

 CUDA_BIN := $(shell echo $$CUDA_BIN)

在makefile中依赖环境变量通常不是一个好主意。在makefile中显式设置值,或在调用中指定值(例如,
makecuda=…
)实际上是正确的方法

如果仍要使用环境中的值,我不知道makefile为什么不工作,但您可以尝试以下方法:

 CUDA_BIN := $(shell echo $$CUDA_BIN)

不完全确定这是否算作解决方案或“解决方案”,但如果make与分配一起运行,例如'CUDA_INSTALL_PATH=/…/make',则此部分工作,但它不是一个'pretty'解决方案是外壳变量CUDA_BIN导出,还是它只是一个普通外壳变量,子进程看不见(即,make)?在bash中,请查看导出的输出。不确定这是否算作解决方案或“解决方案”,但如果make与分配一起运行,例如'CUDA_INSTALL_PATH=/…/make',则此部分可以工作,但它不是一个'pretty'解决方案,而是shell变量CUDA_BIN exported,或者它只是一个普通的shell变量,对子进程不可见(即,make)?在bash中,看一看导出的输出。这种方式有效,但如果显式声明是正确的方式,那么它就回答了我的问题。这种方式有效,但如果显式声明是正确的方式,那么它就回答了我的问题。
/usr/local/cuda/bin
/usr/local/cuda/bin/nvcc
 CUDA_BIN := $(shell echo $$CUDA_BIN)