ubuntuusers.de

Umgebungsvariablen

Status: Ungelöst | Ubuntu-Version: Kubuntu 6.06 (Dapper Drake)
Antworten |

funnyone

Anmeldungsdatum:
20. Dezember 2005

Beiträge: 15

Hallo,

zunächst mal: ich habe mir die entsprechende Seite im Wiki zwar angesehen und versucht damit zum Ziel zu kommen, es hat aber leider nicht so ganz geklappt.

Ich möchte letztlich ein Programm zum Laufen bringen, welches das sogenannte MATLAB Component Runtime (MCR) benötigt um überhaupt zu funktionieren, bzw. darauf basiert.
Die MATLAB-website bietet eine Anleitung an, welche einem zeigt wie man MCR installiert:

UNIX
Locate the MCRInstaller.zip file and copy it to a new directory on your machine. This new directory will become the installation directory for your Compiler-generated components. To install the MCR, unzip MCRInstaller.zip.
Update your dynamic library path.
Note   For readability, the following commands appear on separate lines, but you must enter each setenv command on one line.

setenv LD_LIBRARY_PATH 
        <mcr_root>/<ver>/runtime/glnx86: 
        <mcr_root>/<ver>/sys/os/glnx86: 
        <mcr_root>/<ver>/sys/java/jre/glnx86/jre1.5.0/lib/i386/native_threads: 
        <mcr_root>/<ver>/sys/java/jre/glnx86/jre1.5.0/lib/i386/client: 
        <mcr_root>/<ver>/sys/java/jre/glnx86/jre1.5.0/lib/i386:
setenv XAPPLRESDIR <mcr_root>/<ver>/X11/app-defaults

Da es diesen Befehl (setenv) scheinbar bei Kubuntu bzw. bash nicht gibt, habe ich, nach Wiki-Lektüre, versucht das Ganze einfach mit dem Befehl PATH=$PATH: durchzuführen.
Dabei habe ich die in der Anleitung angegeben Pfade entsprechend verändert.
Den Befehl export PATH habe ich auch durchgeführt.
Nach Eingabe von printenv zeigte die Ausgabe, dass mein Eintrag anscheinend erfolgreich war, die Pfade waren jedenfalls eingetragen.

Nun kommt endlich das eigentliche Problem:
Wenn ich nun aber das Programm, welches ich ursprünglich benutzen wollte (heißt CellC), mit ./cellc (im Terminal) starte, findet es eine Library nicht:

./cellc: error while loading shared libraries: libmwmclmcrrt.so.7.3: cannot open shared object file: No such file or directory


Die Datei ist aber im Instalationsordner von MCR vorhanden.

Habe ich nun die Pfade doch falsch gesetzt, oder bin ich auf dem totalen Holzweg und kann den bei MATLAB angegebenen Befehl nicht einfach durch PATH=$PATH ersetzen?
Muß ich noch diese 90environment-Datei erstellen damit es läuft?
Vielleicht muss ich auch die von MCR abhängige Software einfach an einem speziellen Ort unterbringen?

Wie man sieht, habe ich nicht allzu viel Ahnung und versuche für einen Anfänger relativ komplizierte Geschichten, aber ich würd' halt gern für meine Arbeit in der Uni komplett von Windows unabhängig werden, und dies wäre ein wichtiger Schritt.

Wäre toll, wenn mir hier jemand weiterhelfen könnte (trotz meiner vielleicht etwas verwirrenden Beschreibung)!

Danke,

tom

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17604

Wohnort: Berlin

a) Der Pfad PATH ist der Pfad, in dem nach ausführbaren Dateien gesucht wird, und vom LD_LIBRARY_PATH unterschieden.
Letzeres ist die Menge an Verzeichnissen, in denen nach Bibliotheken (.so-Files) gesucht wird.
b) PATH=$PATH weist der Variablen PATH den aktuellen Wert der Variablen zu, hat also keinen Effekt, außer einen Bruchteil Systemzeit zu konsumieren.
c) statt setenv verwendest Du einfach die Datei /etc/environment, und zwar so:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<mcr_root>/<ver>/runtime/glnx86:<mcr_root>/<ver>/sys/os/glnx86:...


wobei Du <mcr_root>/<ver> offenbar durch den Ort, wo sich mcr befindet, ersetzen mußt.

umarmung Team-Icon

Avatar von umarmung

Anmeldungsdatum:
26. Oktober 2004

Beiträge: 5632

Bist du sicher, dass es so mit LD_LIBRARY_PATH funktioniert? In /etc/environment findet AFAIK keine Variablen Expansion statt. Ein Konstrukt wie LD_LIBRARY_PATH=$LD_LIBRARY_PATH... sollte also nicht funktionieren.

Ich habe LD_LIBRARY_PATH in der Datei ~/.gnomerc gesetzt, da das Setzen über 90environment nicht funktioniert. Gerade diese Variable ist wohl eine Ausnahme. Ich trage das gleich mal im Wiki nach.

funnyone

(Themenstarter)

Anmeldungsdatum:
20. Dezember 2005

Beiträge: 15

Hallo,

an user unknown: dein Vorschlag hat leider nicht geklappt, ich bekomme wieder eine Meldung über eine fehlende Library; aber danke für die Erklärungen, verstehe jetzt etwas besser worum es geht.

An umarmung: wie sollte ich denn jetzt am besten vorgehen? Soll ich die Pfade für die benötigten Libraries in diese .gnomerc-Datei schreiben?
Wo finde ich diese?
Oder: Wo finde ich eine Anleitung, wie man ein WrapperSkript schreibt? (Dein Hinweis im Wiki)

Danke für eure Hilfe

gruß

tom

umarmung Team-Icon

Avatar von umarmung

Anmeldungsdatum:
26. Oktober 2004

Beiträge: 5632

Ein Wrapper Skript ist sehr simpel.

#!/bin/sh
cd /verzeichnis/des/programms
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:<mcr_root>/<ver>/runtime/glnx86...." ./cellc


LD_LIBRARY_PATH musst du natürlich entsprechend anpassen.

Da du anscheinend Kubuntu und damit wohl KDM benutzt, funktioniert das mit .gnomerc wahrscheinlich nicht.

funnyone

(Themenstarter)

Anmeldungsdatum:
20. Dezember 2005

Beiträge: 15

ich scheine irgendwas falsch gemacht zu haben,
ich bekomme beim Ausführen des erstellten Skripts wieder die gleiche Fehlermeldung über die angelich fehlende Library:

./cellcwrapper
./cellc: error while loading shared libraries: libmwmclmcrrt.so.7.3: cannot open shared object file: No such file or directory

Mein erstes selbst verfasstes Skript sieht so aus:

#!/bin/sh
cd /home/tom/cellc_linux
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/tom/mcr/v73/runtime/glnx86:/home/tom/mcr/v73/sys/os/glnx86:/home/tom/mcr/v73/sys/java/jre/glnx86/jre1.5.0/lib/i386/native_threads:/home/tom/mcr/v73/sys/java/jre/glnx86/jre1.5.0/lib/i386/client:/home/tom/mcr/v73/sys/java/jre/glnx86/jre1.5.0/lib/i386"
./cellc

Ich habe es mit kate erstellt und einfach im Ordner von cellc gespeichert.
In einem Linux-Kompendium habe ich noch gelesen, man solle ein Skript mit chmod ausführbar machen, also habe ich das auch noch gemacht bevor ich es dann ausgeführt habe.

sudo chmod 777 /home/tom/cellc_linux/cellcwrapper

Habe ich vielleicht irgendwas in der Syntax verkehrt gemacht (Anführungszeichen o.ä)?

umarmung Team-Icon

Avatar von umarmung

Anmeldungsdatum:
26. Oktober 2004

Beiträge: 5632

LD_LIBRARY_PATH und ./cellc liegen aber in einer Zeile oder?

funnyone

(Themenstarter)

Anmeldungsdatum:
20. Dezember 2005

Beiträge: 15

ok, da lag mein Fehler.
Hab es behoben, bekomme aber jetzt diese Fehlermeldung:

./cellc: /home/tom/mcr/v73/runtime/glnx86/../../sys/os/glnx86/libgcc_s.so.1: version `GCC_3.3' not found (required by /usr/lib/libstdc++.so.6)

libgcc_s.so.1 ist aber an der angegebenen Stelle vorhanden!

Ist es jetzt eine falsche Version, oder wie habe ich das zu verstehen?
Könnte man sie gegebenenfalls gegen die richtige austauschen?

Nachtrag:

Ich habe beim Stöbern in den Ordnern des MATLAB Component Runtime dieses Readme gefunden:

This version of the C++ library comes with gcc-3.2.3, available
(among other places) from ftp.gnu.org.  It is included with MATLAB
in case your distribution doesn't provide it.

If you need the header files to go with it (particularly if you are
building C++ mex files) please visit ftp://ftp.gnu.org/pub/gnu/gcc
and download the 3.2.3 compiler sources.

If you have a newer version of libstdc++ on your system already,
typically in /usr/lib, you may be able to remove or rename this file
and let MATLAB find the one on your own system.  If you have problems
with this approach, however, we recommend using the same compiler
that was used to compile MATLAB, gcc/g++ 3.2.3

Sieht so aus, als würde das Problem im letzten Absatz erklärt werden.
Trotzdem weiss ich nicht so recht, was ich machen soll, ich möchte ja auch nicht mein System zerlegen...

funnyone

(Themenstarter)

Anmeldungsdatum:
20. Dezember 2005

Beiträge: 15

da das zu Anfang geschilderte Problem gelöst wurde, werde ich für das neu aufgetauchte demnächst ein anderes Thema eröffnen.

Danke nochmal für die Hilfe

Antworten |