首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Makefile变量替换有时被忽略

Makefile变量替换有时被忽略
EN

Stack Overflow用户
提问于 2010-09-09 15:21:44
回答 1查看 1.4K关注 0票数 1

编译一个启用了CUDA的版本的aircrack已经有一段时间没有被bug修复了,所以需要进行一些修补,以获得大部分的方式。

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

相关Makefile部分

代码语言:javascript
复制
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

相关制作输出

代码语言:javascript
复制
/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输出

代码语言:javascript
复制
/usr/local/cuda/bin

which nvcc输出

代码语言:javascript
复制
/usr/local/cuda/bin/nvcc

从任何方面来说,我都不是大师,所以如果我做了明显的错误,请原谅我。

在尝试用完整路径对nvcc标志进行硬编码之后,该部分会编译,但是当涉及到一个密码部分(涉及libssl)时,它无法找到必要的库,而且以类似的方式没有替换'CUDA_INSTALL_ path ',即使它是在环境中,这表明正在发生一些奇怪的事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-09 16:07:48

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

如果您仍然想使用来自环境的值,我不知道为什么makefile不能工作,但是您可以尝试如下:

代码语言:javascript
复制
 CUDA_BIN := $(shell echo $$CUDA_BIN)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3677983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档