编译一个启用了CUDA的版本的aircrack已经有一段时间没有被bug修复了,所以需要进行一些修补,以获得大部分的方式。
基本上,make找不到这一段代码的相关编译器(nvcc);
相关Makefile部分
ifeq ($(CUDA), true)
CFLAGS += -DCUDA_ENABLED
NVCC := $(CUDA_BIN)/nvcc
INCLUDES += -I. -I$(CUDA_INSTALL_PATH)/include
COMMONFLAGS += $(INCLUDES) -DUNIX
NVCCFLAGS += --compiler-options -fno-strict-aliasing --host-compilation=C $(COMMONFLAGS)
# Change this only if you have COMPUTE > 1.0
NVCCFLAGS += -maxrregcount 12
# Enable this for extra compiler and as output
#NVCCFLAGS += --ptxas-options "-v" --verbose
LIBSSL += -L$(CUDA_INSTALL_PATH)/lib -L$(CUDA_INSTALL_PATH)/lib64 -lcuda -lcudart
%.o : %.cu
$(NVCC) $(NVCCFLAGS) $(SMVERSIONFLAGS) -o $@ -c $<
endif相关制作输出
/nvcc --compiler-options -fno-strict-aliasing --host-compilation=C -I. -I/include -DUNIX -maxrregcount 12 -o cudacrypto.o -c cudacrypto.cu
make[1]: /nvcc: Command not found
make[1]: *** [cudacrypto.o] Error 127
make[1]: Leaving directory `/home/bolster/src/aircrack-ng-cuda/src'
make: *** [install] Error 2如您所见,make正在删除环境变量'CUDA_BIN‘。
echo $CUDA_BIN输出
/usr/local/cuda/binwhich nvcc输出
/usr/local/cuda/bin/nvcc从任何方面来说,我都不是大师,所以如果我做了明显的错误,请原谅我。
在尝试用完整路径对nvcc标志进行硬编码之后,该部分会编译,但是当涉及到一个密码部分(涉及libssl)时,它无法找到必要的库,而且以类似的方式没有替换'CUDA_INSTALL_ path ',即使它是在环境中,这表明正在发生一些奇怪的事情。
发布于 2010-09-09 16:07:48
在makefile中依赖环境变量通常不是一个好主意。在makefile中显式显示值,或者在调用中指定值(例如make CUDA=...)实际上是正确的方法。
如果您仍然想使用来自环境的值,我不知道为什么makefile不能工作,但是您可以尝试如下:
CUDA_BIN := $(shell echo $$CUDA_BIN)https://stackoverflow.com/questions/3677983
复制相似问题