Wie kann ich es loswerden LD_LIBRARY_PATH zur Laufzeit?

Baue ich eine C++ - Anwendung, die verwendet Intel IPP Bibliothek. Diese Bibliothek wird standardmäßig installiert in /opt und erfordert, dass Sie eingestellt LD_LIBRARY_PATH sowohl für die Erstellung und für den Betrieb Ihrer software (wenn Sie die shared-Bibliothek verknüpfen, was ich auch Tat). Ich habe bereits meine modifizierten configure.ac/Makefile.am so dass ich nicht brauchen, um festzulegen, dass die variable beim kompilieren, aber ich kann immer noch nicht finden, die shared library zur Laufzeit; wie mache ich das?

Ich kompiliere mit der -Wl, -R/path/to/libdir Flagge mit g++

Update 1:
Eigentlich meine binäre Programm hat einige IPP-Bibliotheken korrekt verbunden, aber nur einer ist nicht:

$ ldd myprogram
linux-vdso.so.1 =>  (0x00007fffa93ff000)
libippacem64t.so.6.0 => /opt/intel/ipp/6.0.2.076/em64t/sharedlib/libippacem64t.so.6.0 (0x00007f22c2fa3000)
libippsem64t.so.6.0 => /opt/intel/ipp/6.0.2.076/em64t/sharedlib/libippsem64t.so.6.0 (0x00007f22c2d20000)
libippcoreem64t.so.6.0 => /opt/intel/ipp/6.0.2.076/em64t/sharedlib/libippcoreem64t.so.6.0 (0x00007f22c2c14000)
[...]
libiomp5.so => not found
libiomp5.so => not found
libiomp5.so => not found

Natürlich die Bibliothek ist es:

$ locate libiomp5.so
/opt/intel/ipp/6.0.2.076/em64t/sharedlib/libiomp5.so
  • Ich könnte zu ändern brauchen die Frage auf etwas anderes, aber ich brauche Vorschläge, bin ich kurz auf Ideen
  • Hm, ich Frage mich, ob es Zufall ist, dass einem das auch fehlt die Versionsnummer eine Erweiterung - vielleicht IPP ist nicht nur die Installation selbst Recht?
  • Ich Frage mich, ob Sie die vergessene Bibliothek ist nicht verwiesen Ihr Programm, sondern durch die Bibliotheken, die Ihre Referenzen?
  • das ist ein wirklich guter Gedanke. Sie könnte möglicherweise kompilieren IPP (oder andere IPP-abhängigen Bibliotheken) mit LD_RUN_PATH oder richtige linker-Optionen.
  • Sie sind wahrscheinlich Recht, ich erinnere mich gelesen zu haben, dass so etwas wie und libiomp5.so ist ein threading-Bibliothek von Intel (IIRC Teil der MKL). Das Problem ist, dass ich nicht neu kompilieren, IPP, weil Sie nicht mit dem OSS...
  • Sollten Sie absolut nicht ändern Sie Ihre app konfigurieren.ac/Makefile.bin zu reflektieren, die nicht-standard-Speicherort der Bibliothek. Verwenden Sie stattdessen eine CONFIG_SITE Datei zum setzen von LD_LIBRARY_PATH für Sie unter konfigurieren der Zeit (oder einfach in der Umgebung der login-shell, das löst das Laufzeit-problem).
  • Der Pfad wird erweitert durch Variablen festlegen von benutzerdefinierten m4-Makros, suchen für die Bibliothek. Es gibt keine "festen" Weg in meiner Konfiguration.ac

InformationsquelleAutor Kjir | 2010-03-20
Schreibe einen Kommentar