dyld: библиотека не загружена: @rpath/libopenblas.dylib

Когда я делаю свой файл, у меня есть эта ошибка:

dyld: Библиотека не загружена: @rpath/libopenblas.dylib Ссылка из: /Users/danyunhe2/reinf_learning2/cpp_original/./navig_test
Причина: изображение не найдено Ловушка отмены: 6

Я попробовал ln -sf <original path> /usr/local/lib, но это не сработало.
Из brew info openblas я получил:

openblas: stable 0.3.5 (bottled), HEAD [keg-only]  
Optimized BLAS library  
https://www.openblas.net/  
/usr/local/Cellar/openblas/0.3.5 (22 files, 120.7MB)  
  Poured from bottle on 2019-02-18 at 01:27:14  
From: https://github.com/Homebrew/homebrew-  core/blob/master/Formula/openblas.rb 
==> Dependencies  
Required: gcc ✔  
==> Options  
--HEAD  
    Install HEAD version  
==> Caveats  
openblas is keg-only, which means it was not symlinked into /usr/local,
because macOS provides BLAS and LAPACK in the Accelerate framework.  

For compilers to find openblas you may need to set:  
  export LDFLAGS="-L/usr/local/opt/openblas/lib"  
  export CPPFLAGS="-I/usr/local/opt/openblas/include"  

Он сказал мне установить компилятор с LDFLAGS и CPPFLAGS. Я пытался, но это не сработало. Кто-нибудь знает, как с этим бороться?

У меня есть мой config.mk как:

# C++ compiler
cxx=g++-7 -fopenmp 

# Compilation flags
cflags=-Wall -ansi -pedantic -O3 

# BLAS/LAPACK flags for linear algebra
lp_lflags=-framework Accelerate 


# FFTW flags (installed via Homebrew)
fftw_iflags=
fftw_lflags=-lfftw3

# libpng flags (installed via Homebrew)
png_iflags=
png_lflags=-lpng

и Makefile:

# Load the common configuration file
include config.mk

iflags=`gsl-config --cflags`
lflags=`gsl-config --libs`

objs=navigate.o reinf_learn.o common.o
src=$(patsubst %.o,%.cc,$(objs))
execs=navig_test

all:
    $(MAKE) executables

executables: $(execs)

depend: $(src)
    $(cxx) $(iflags) -MM $(src) >Makefile.dep

-include Makefile.dep

navig_test: navig_test.cc $(objs)
    $(cxx) $(cflags) $(iflags)  -o $@ $^ $(lflags)

%.o: %.cc
    $(cxx) $(cflags) $(iflags)  -c $<

clean:
    rm -f $(execs) $(objs)

.PHONY: clean all executables depend

person Dana    schedule 18.02.2019    source источник


Ответы (1)


В OSX это DYLD_LIBRARY_PATH, который вам нужно указать во время выполнения следующим образом:

export DYLD_LIBRARY_PATH=/usr/local/opt/openblas/lib

Тем не менее, пожалуйста, примите во внимание предупреждение brew относительно фреймворка Accelerate. Это намного быстрее со многими операциями BLAS на всех уровнях. Вы просто заставите программы работать медленнее.

person Kaveh Vahedipour    schedule 21.02.2019
comment
Благодарю вас! Я исправил export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/Cellar/openblas/0.3.5/lib - person Dana; 21.02.2019