tl; dr:Caffe
makefile cerca libblas.so
in /usr/lib
. Se mancante, update-alternatives
crea un collegamento simbolico /usr/lib/libblas.so
nel percorso in cui è installato. Lo stesso vale per libcblas.so
. LD_LIBRARY_PATH
è per il runtime e non ha nulla a che fare con questo.
LD_LIBRARY_PATH
in realtà non ti aiuta durante la compilazione. Fornisce solo le directory per cercare le librerie condivise quando eseguono programmi che si basano su di esse, dopo il vengono compilate. Tuttavia, durante il collegamento durante la compilazione, il compilatore deve trovare queste librerie condivise e lo fa in altro modo rispetto allo LD_LIBRARY_PATH
.
Più precisamente: se la compilazione con gcc
o clang
, le directory in cui ricercare le librerie di collegamento con sono forniti utilizzando il flag -L
, e non considera la variabile LD_LIBRARY_PATH
ambiente.
Le posizioni comuni per libblas.so
sono /usr/lib/atlas-base/
e /usr/lib/libblas/
. Il Makefile
per caffe
non esegue alcuna operazione particolare per cercare e individuare queste sottodirectory e fa affidamento su queste librerie nella directory di libreria predefinita /usr/lib/
. In genere esiste un collegamento simbolico /usr/lib/libblas.so
e punta alla posizione reale della libreria condivisa. Per qualche ragione, questo non era il caso nella configurazione iniziale.
Quando si tratta di più alternative per i pacchetti, update-alternatives
è utile. Nel caso di libblas.so
, è possibile passare facilmente da una molteplicità di implementazioni (libblas
, openblas
) che è possibile installare, modificando i collegamenti simbolici.
sudo update-alternatives --config libblas.so
creato questo collegamento simbolico quando mancava, che a sua volta consentono al compilatore di trovare la libreria condivisa, risolvendo il problema. Questo è indicato con l'uscita del comando:
$ sudo update-alternatives --config libblas.so
There is only one alternative in link group libblas.so (providing /usr/lib/libblas.so): /usr/lib/libblas/libblas.so
Nothing to configure.
Stesso tipo di ragionamento vale per libcblas.so
.
Questo funziona! Grazie – mcExchange