编译一个支持 CUDA 的 Aircrack-ng 版本,该版本已经有一段时间没有修复错误了,因此需要一些修补才能实现“大部分”的目标。 基本上,对于这一段代码,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/bin
输出which nvcc
/usr/local/cuda/bin/nvcc
我绝对不是一个制作大师,所以如果我做了一些明显错误的事情,请原谅我。
尝试使用完整路径对 nvcc 标志进行硬编码后,该部分可以编译,但是当涉及到加密部分(涉及 libssl)时,它无法找到必要的库,并且以与上面类似的方式不会替换“CUDA_INSTALL_PATH” ,即使它在环境中,这表明正在发生一些奇怪的事情。
make CUDA=...
)实际上是正确的方法。
如果您仍然想使用环境中的值,我不知道为什么您的 makefile 不起作用,但您可以尝试以下操作:
CUDA_BIN := $(shell echo $$CUDA_BIN)
export CUDA_BIN=/usr/local/cuda/bin
更基本的命令
CUDA_BIN=/usr/local/cuda/bin
将导致正确的结果 对于命令
echo $CUDA_BIN
但不能确保 Makefile 可以访问变量