2016-10-26 5 views
1

Я пытаюсь скомпилировать Caffe, и я получаю следующее сообщение об ошибке, что я не могу отлаживать:Ошибка при компиляции Caffe: LD: не может отобразить файл, ERRNO = 22

ld: can't map file, errno=22 file '/usr/local/opt/openblas/lib' for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я скачал OpenBLAS с помощью brew install openblas и получили следующие потенциально важный вывод:

==> Caveats 
This formula is keg-only, which means it was not symlinked into /usr/local. 

macOS already provides this software and installing another version in 
parallel can cause all kinds of trouble. 

Generally there are no consequences of this for you. If you build your 
own software and it requires this formula, you'll need to add to your 
build variables: 

    LDFLAGS: -L/usr/local/opt/openblas/lib 
    CPPFLAGS: -I/usr/local/opt/openblas/include 

я добавил необходимые пути в мой файл Makefile.config, которая находится ниже:

# Refer to http://caffe.berkeleyvision.org/installation.html 
# Contributions simplifying and improving our build system are welcome! 

# cuDNN acceleration switch (uncomment to build with cuDNN). 
# USE_CUDNN := 1 

# CPU-only switch (uncomment to build without GPU support). 
CPU_ONLY := 1 

# To customize your choice of compiler, uncomment and set the following. 
# N.B. the default for Linux is g++ and the default for OSX is clang++ 
# CUSTOM_CXX := g++ 

# CUDA directory contains bin/ and lib/ directories that we need. 
CUDA_DIR := /usr/local/cuda 
# On Ubuntu 14.04, if cuda tools are installed via 
# "sudo apt-get install nvidia-cuda-toolkit" then use this instead: 
# CUDA_DIR := /usr 

# CUDA architecture setting: going with all of them. 
# For CUDA < 6.0, comment the *_50 lines for compatibility. 
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \ 
      -gencode arch=compute_20,code=sm_21 \ 
      -gencode arch=compute_30,code=sm_30 \ 
      -gencode arch=compute_35,code=sm_35 \ 
      -gencode arch=compute_50,code=sm_50 \ 
      -gencode arch=compute_50,code=compute_50 

# BLAS choice: 
# atlas for ATLAS (default) 
# mkl for MKL 
# open for OpenBlas 
BLAS := open 
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories. 
# Leave commented to accept the defaults for your choice of BLAS 
# (which should work)! 
# BLAS_INCLUDE := /usr/local/opt/openblas/include 
# BLAS_LIB := /usr/local/opt/openblas/lib 

# Homebrew puts openblas in a directory that is not on the standard search path 
BLAS_INCLUDE := $(shell brew --prefix openblas)/include 
BLAS_LIB := $(shell brew --prefix openblas)/lib 

# This is required only if you will compile the matlab interface. 
# MATLAB directory should contain the mex binary in /bin. 
# MATLAB_DIR := /usr/local 
# MATLAB_DIR := /Applications/MATLAB_R2012b.app 

# NOTE: this is required only if you will compile the python interface. 
# We need to be able to find Python.h and numpy/arrayobject.h. 
# PYTHON_INCLUDE := /usr/include/python2.7 \ 
      # /usr/lib/python2.7/dist-packages/numpy/core/include 
# Anaconda Python distribution is quite popular. Include path: 
# Verify anaconda location, sometimes it's in root. 
ANACONDA_HOME := $(HOME)/anaconda 
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ 
        $(ANACONDA_HOME)/include/python2.7 \ 
        $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \ 

# We need to be able to find libpythonX.X.so or .dylib. 
# PYTHON_LIB := /usr/lib 
PYTHON_LIB := $(ANACONDA_HOME)/lib 

# Homebrew installs numpy in a non standard path (keg only) 
# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core;  print(numpy.core.__file_$ 
# PYTHON_LIB += $(shell brew --prefix numpy)/lib 

# Uncomment to support layers written in Python (will link against Python libs) 
# WITH_PYTHON_LAYER := 1 

# Whatever else you find you need goes here. 
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include 
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 

# If Homebrew is installed at a non standard location (for example your home directory) $ 
# INCLUDE_DIRS += $(shell brew --prefix)/include 
# LIBRARY_DIRS += $(shell brew --prefix)/lib 

# Uncomment to use `pkg-config` to specify OpenCV library paths. 
# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $ 
# USE_PKG_CONFIG := 1 

BUILD_DIR := build 
DISTRIBUTE_DIR := distribute 

# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/iss$ 
# DEBUG := 1 

# The ID of the GPU that 'make runtest' will use to run unit tests. 
TEST_GPUID := 0 

# enable pretty build (comment to see full commands) 
Q ?= @ 
+0

вы пользовались -I до LDFLAGS? –

ответ

0

Грубый, но метод работы:

изменить следующую строку в Makefile (не конфигурации)

LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir)) $(PKG_CONFIG) \ $(foreach library,$(LIBRARIES),-l$(library)) 

с

LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir)) $(PKG_CONFIG) \ $(foreach library,$(LIBRARIES),-l$(library)) \ -I/usr/local/opt/openblas/include \ -L/usr/local/opt/openblas/lib 
+0

Я отредактировал эти две строки и по-прежнему получаю ту же ошибку. Мои изменения были следующими: 'INCLUDE_DIRS: =/usr/local/include/usr/local/opt/openblas/lib' и' LIBRARY_DIRS: =/usr/local/lib/usr/lib/usr/local/opt/openblas/include ', поскольку в моих переменных PYTHON_INCLUDE и PYTHON_LIB ничего не было. – Melanie

+0

Что такое вывод 'shell brew --prefix openblas'? –

+0

Я никогда не устанавливал caffe ... но у вас есть некоторая './Config' для запуска до' make'? –