Makefile Caffe-segnet:参数的重新定义&x27;编译器bindir';

Makefile Caffe-segnet:参数的重新定义&x27;编译器bindir';,makefile,caffe,Makefile,Caffe,编译caffe segnet已经有好几天了,现在我遇到了这个错误,我正在使用gccgcc(Ubuntu 4.8.5-4ubuntu8)4.8.5 进行编译。我使用的是caffe和opencv文档中提到的Cuda 9.0、cudnn v2和opencv 3.3.0。禁用cudnn或不在Makefile.config中不会改变上述任何内容 在此之前,我使用cuda 10.0和cudnn 7.0并删除了所有内容,因为在启动我的模型时有太多错误。以下是使用“全部生成”时的输出错误: CXX src/ca

编译caffe segnet已经有好几天了,现在我遇到了这个错误,我正在使用gcc
gcc(Ubuntu 4.8.5-4ubuntu8)4.8.5
进行编译。我使用的是caffe和opencv文档中提到的Cuda 9.0cudnn v2opencv 3.3.0。禁用
cudnn
或不在
Makefile.config
中不会改变上述任何内容

在此之前,我使用cuda 10.0和cudnn 7.0并删除了所有内容,因为在启动我的模型时有太多错误。以下是使用“全部生成”时的输出错误:

CXX src/caffe/common.cpp
/usr/bin/g++-4.8 src/caffe/common.cpp -pthread -fPIC -DNDEBUG -O2 -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -I/usr/local/hdf5 -I/usr/local/hdf5/include -I.build_release/src -I./src -I./include -I/usr/local/cuda/include -Wall -Wno-sign-compare -std=c++11 -MMD -MP -pthread -fPIC -DNDEBUG -O2 -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -I/usr/local/hdf5 -I/usr/local/hdf5/include -I.build_release/src -I./src -I./include -I/usr/local/cuda/include -Wall -Wno-sign-compare -c -o .build_release/src/caffe/common.o 2> .build_release/src/caffe/common.o.warnings.txt \
    || (cat .build_release/src/caffe/common.o.warnings.txt; exit 1)
CXX src/caffe/internal_thread.cpp
/usr/bin/g++-4.8 src/caffe/internal_thread.cpp -pthread -fPIC -DNDEBUG -O2 -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -I/usr/local/hdf5 -I/usr/local/hdf5/include -I.build_release/src -I./src -I./include -I/usr/local/cuda/include -Wall -Wno-sign-compare -std=c++11 -MMD -MP -pthread -fPIC -DNDEBUG -O2 -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -I/usr/local/hdf5 -I/usr/local/hdf5/include -I.build_release/src -I./src -I./include -I/usr/local/cuda/include -Wall -Wno-sign-compare -c -o .build_release/src/caffe/internal_thread.o 2> .build_release/src/caffe/internal_thread.o.warnings.txt \
    || (cat .build_release/src/caffe/internal_thread.o.warnings.txt; exit 1)
NVCC src/caffe/layers/upsample_layer.cu
/usr/local/cuda/bin/nvcc -D_FORCE_INLINES -ccbin=/usr/bin/g++-4.8 -Xcompiler -fPIC -DNDEBUG -O2 -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -I/usr/local/hdf5 -I/usr/local/hdf5/include -I.build_release/src -I./src -I./include -I/usr/local/cuda/include -std=c++11 -ccbin=/usr/bin/g++-4.8 -Xcompiler -fPIC -DNDEBUG -O2 -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -I/usr/local/hdf5 -I/usr/local/hdf5/include -I.build_release/src -I./src -I./include -I/usr/local/cuda/include  -M src/caffe/layers/upsample_layer.cu -o .build_release/cuda/src/caffe/layers/upsample_layer.d \
    -odir .build_release/cuda/src/caffe/layers
nvcc fatal   : redefinition of argument 'compiler-bindir'
Makefile:544: recipe for target '.build_release/cuda/src/caffe/layers/upsample_layer.o' failed
make: *** [.build_release/cuda/src/caffe/layers/upsample_layer.o] Error 1
以及
Makefile
中的第544行,该错误来自:

...
    @ cat $@.$(WARNS_EXT)

$(BUILD_DIR)/cuda/%.o: %.cu | $(ALL_BUILD_DIRS)
544>    @ echo NVCC $<
    $(Q)$(CUDA_DIR)/bin/nvcc $(NVCCFLAGS) $(CUDA_ARCH) -M $< -o ${@:.o=.d} \
        -odir $(@D)
...
。。。
@cat$@.$(警告\u EXT)
$(构建目录)/cuda/%.o:%.cu$(所有构建目录)
544>@echo NVCC$<
$(Q)$(CUDA_DIR)/bin/nvcc$(NVCCFLAGS)$(CUDA_ARCH)-M$<-o${@:.o=.d}\
-odir$(@D)
...
注意,我尝试用gcc 5和gcc 7编译它,但出现了相同的错误!有什么想法吗,伙计们

编辑1:
我还将这个
CUSTOM\u CXX:=/usr/bin/g++-4.8
添加到
Makefile.config
由于没有人询问我最终找到了一个解决方案,导致错误的原因是同一个参数被调用了两次,在我的
Makefile
中,我添加了以下代码行:

cxflags+=-pthread-fPIC$(公共标志)$(警告)-std=c++11
NVCCFLAGS+=-D_FORCE_INLINES-ccbin=$(CXX)-Xcompiler-fPIC$(公共_标志)-std=c++11
LINKFLAGS+=-pthread-fPIC$(公共_标志)$(警告)-std=c++11

避免此错误<代码> /Ur/Cube/C++ + /BIT/C++ +0xYAdvult.H:32:2:错误:{错误:该文件需要编译器和库支持ISO C++ 2011标准。此支持目前处于试验阶段,必须使用-std=c++11或-std=gnu++11编译器选项启用。

在完整构建标志的同一文件中,我们有相同的标志:

。。。
#完成构建标志。
公共_标志+=$(foreach includedir,$(INCLUDE_DIRS),-I$(includedir))
CXXFLAGS+=-pthread-fPIC$(通用标志)$(警告)
NVCCFLAGS+=-ccbin=$(CXX)-Xcompiler-fPIC$(公共_标志)
#mex可能会调用一个较旧的gcc,它对-Wuninitalized过于宽松
...
我所做的是评论我的旗帜,我补充道:

cxflags+=-pthread-fPIC$(公共标志)$(警告)-std=c++11
#NVCCFLAGS+=-D_FORCE_INLINES-ccbin=$(CXX)-Xcompiler-fPIC$(公共_标志)-std=c++11
LINKFLAGS+=-pthread-fPIC$(公共_标志)$(警告)-std=c++11
并将
-std=c++11
参数添加到
NVCCFLAGS
的“完整构建标志”部分中,结果如下:

。。。
#完成构建标志。
公共_标志+=$(foreach includedir,$(INCLUDE_DIRS),-I$(includedir))
CXXFLAGS+=-pthread-fPIC$(通用标志)$(警告)
NVCCFLAGS+=-ccbin=$(CXX)-Xcompiler-fPIC$(公共_标志)-std=c++11
#mex可能会调用一个较旧的gcc,它对-Wuninitalized过于宽松
...
在编辑Makefile后执行
全部确认
之前,请确保执行
清除
操作,否则会出现相同的错误