Компиляция версии aircrack-ng, поддерживающей CUDA, которая не была исправлена ошибкой через некоторое время, поэтому потребовалось немного исправления, чтобы получить больше всего.Подстановка переменной Makefile иногда игнорируется
В принципе, 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 [email protected] -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
Как вы можете видеть, что это выглядит, как сделать это, сбросив переменных среды, 'CUDA_BIN'.
Выход echo $CUDA_BIN
/usr/local/cuda/bin
Выход which nvcc
/usr/local/cuda/bin/nvcc
Я не заставлю-гуру на любом участке, так что, если я делаю что-то явно, очевидно, неправильно, прости меня.
После попытки жесткого кодирования флага nvcc с полным путем этот раздел компилируется, но когда дело доходит до раздела криптографии (с использованием libssl), он не может найти необходимые библиотеки, и так же, как выше, не заменяет 'CUDA_INSTALL_PATH', хотя он находится в среде, что указывает на то, что происходит что-то странное.
Не совсем уверен, если это имеет значение в качестве решения или «обходной путь», но если make запускается встроенным с назначением, например «CUDA_INSTALL_PATH =/.../make», то этот раздел работает, но его не «красивое» решение – Bolster
Является ли экспортированная оболочка переменной CUDA_BIN или она просто обычная переменная оболочки, не видимая подпроцессам (т. е. сделать)? В bash, посмотрите на вывод экспорта. – bobbogo