编译一个CUDA启用的aircrack-ng版本,该版本一段时间内没有被错误修复,因此需要进行一些修补以获得大多数的方式。
基本上,make无法为这一段代码找到相关的编译器(nvcc
);
Relevent 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',即使它在环境中,也表示发生了奇怪的事情。
答案 0 :(得分:1)
在makefile中依赖环境变量通常不是一个好主意。在makefile中显式显示值,或在调用中指定值(例如make CUDA=...
)实际上是正确的方法。
如果您仍想使用环境中的值,我不知道为什么您的makefile不起作用,但您可以试试这个:
CUDA_BIN := $(shell echo $$CUDA_BIN)