dyld: библиотека не загружена: @ rpath / libopenblas.dylib - PullRequest
0 голосов
/ 18 февраля 2019

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

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

Я пытался ln -sf <original path> /usr/local/lib, но это не сработало.
Из информации о пивоварне 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

1 Ответ

0 голосов
/ 21 февраля 2019

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

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

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

...