2015-09-16 67 views
1

我試圖在ubuntu 14.04 LTS上用Anaconda編譯caffe,只用CPU模式和OpenBLAS。不幸的是,我得到了一個ld錯誤。在編譯caffe時出現ld錯誤:找不到libpng和libgfortran,共享庫

我遵照指示,添加了Anaconda沒有提供的依賴項,並相應地調整了Makefile.config,尤其是包含了Anaconda路徑。 當我做make all我得到了你在下面看到的錯誤(我還包括了Makefile.config),即使沒有找到的兩個文件在共享庫中的anaconda/lib文件夾和各自的pkgs文件夾中。

非常感謝您的幫助!

終端:

CXX/LD -o .build_release/tools/extract_features.bin 
/usr/bin/ld: warning: libpng15.so.15, needed by /home/mclab/anaconda/lib/libopencv_highgui.so, not found (try using -rpath or -rpath-link) 
/usr/bin/ld: warning: libgfortran.so.1, needed by /home/mclab/anaconda/lib/libopenblas.so, not found (try using -rpath or -rpath-link) 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopenblas.so: undefined reference to `_gfortran_pow_i4_i4' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopenblas.so: undefined reference to `_gfortran_compare_string' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopenblas.so: undefined reference to `_gfortran_pow_r8_i4' 
/home/mclab/anaconda/lib/libopenblas.so: undefined reference to `_gfortran_concat_string' 
/home/mclab/anaconda/lib/libopenblas.so: undefined reference to `_gfortran_pow_r4_i4' 
/home/mclab/anaconda/lib/libopenblas.so: undefined reference to `_gfortran_etime' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopenblas.so: undefined reference to `_gfortran_copy_string' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
/home/mclab/anaconda/lib/libopencv_highgui.so: undefined reference to `[email protected]_0' 
collect2: error: ld returned 1 exit status 
make: *** [.build_release/tools/extract_features.bin] Error 1 

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 := /home/mclab/anaconda/pkgs/openblas-0.2.14-1/include 
BLAS_LIB := /home/mclab/anaconda/pkgs/openblas-0.2.14-1/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 := /home/mclab/anaconda/include/python2.7 \ 
     /home/mclab/anaconda/lib/python2.7/site-packages/numpy/core/include 
# Anaconda Python distribution is quite popular. Include path: 
# Verify anaconda location, sometimes it's in root. 
# ORIGINAL: 
ANACONDA_HOME := $(HOME)/anaconda 
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \ 
     $(ANACONDA_HOME)/include/python2.7 \ 
     $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \ 
# MODIFIED 
# ANACONDA_HOME := /home/mclab/anaconda 
# PYTHON_INCLUDE := /home/mclab/anaconda/include \ 
#  /home/mclab/anaconda/include/python2.7 \ 
#  /home/mclab/anaconda/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__)'))/include 
# 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) and you use it for general dependencies 
# 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 $LIBRARY_DIRS.) 
# 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/issues/171 
# 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

好了,它看起來像我能夠自己解決這個問題。我不知道它是否是一個好的解決方案,所以我很感激任何評論:在文件夾/etc/ld.so.conf.d中,我創建了一個文件fooLibrary.conf。該文件僅包含Anaconda的lib文件夾的完整路徑。在sudo ldconfig之後,ld能夠找到相關的軟件包。一旦我完成,我再次刪除文件,但我懷疑問題是最終解決。因此,我會很高興評論或更好的解決方案。