Forum: Compiler & IDEs Umgebungsvariable CodeSourcery Ubuntu 64Bit


von Windows-User (Gast)


Lesenswert?

Hallo,

ich habe folgendes Problem mit CodeSourcery und Ubuntu 64Bit:
Wenn ich 'source ~/.bash_profile' im Terminal-Fenster eingebe, dann wird 
'arm-none-eabi-gcc' gefunden und ausgeführt - anderfalls nicht. Wie 
bekomme ich den Pfad standardmäßig 'geladen'?

Das Problem schlägt nämlich auch auf Eclipse über. Dort werden 
Compiler/Linker von CodeSourcery überhaupt nicht gefunden!

Wer weiß, wie ich das zusammenbekomme?

Gruß

von Daniel B. (dbuergin)


Lesenswert?

Bei mir werden die folgenden zwei Dateien ausgeführt beim öffnen eines
neuen Terminalfensters (Ubuntu 10.10 32bit)

/etc/bash.bashrc
$HOME/.bashrc

Schau mal, was Du im .bashrc hast, und wenn es leer ist, mach aus dem
.bash_profile das .bashrc, wenn nicht, führe den Inhalt zusammen, so
dass Du nur noch das .bashrc hast.

Daniel

von Windows-User (Gast)


Lesenswert?

Danke Daniel für die schnelle Antwort.

Ich als Windows-User hab das jetzt mal zusammengeführt indem ich einfach 
alles aus .bash_profile nach .bashrc kopiert habe:

PATH="/home/abc/CodeSourcery/Sourcery_G++_Lite/bin:${PATH}"
export PATH

Und es funktioniert tatsächlich! Nicht nur, dass es im Terminal geht, 
nein auch in Eclipse!! Ich probiere schon seit 2 Stunden rum - 
wenigstens was zu Linux gelernt.

Danke Dir nochmal!

Gruß

von Andreas B. (Gast)


Lesenswert?

Die .bash_profile wird von einer Login-Shell ausgeführt, die .bashrc von 
jeder gestarteten Shell (bzw. natürlich von der bash, andere Shells 
verwenden diese Namen nicht).

Zweckmäßigerweise landet alles, was pro Login nur einmal ausgeführt 
wird, in der .profile. Problem bei der grafischen Oberfläche ist halt, 
dass der Login nicht über die Shell geht, welche Skripte da eingelesen 
werden hängt von der Konfiguration (des Session-Typs) ab.

Das Problem mit PATH in der .bashrc ist, dass die eben immer gesetzt 
wird wenn eine (interaktive) bash gestartet wird. Du kannst die Variable 
also nicht in einer Shell ändern und erwarten, dass sie in einer daraus 
gestarteten Shell noch den selben Wert hat.

von Daniel B. (dbuergin)


Lesenswert?

Welcome to Linux ;-)

Die Dateien /etc/profile, $HOME/.profile und $HOME/.bash_profile werden
nur durchlaufen, wenn Du dich direkt über ein Terminal oder über
das Netz auf einem Unix-Rechner anmeldest.
Dann wird die BASH als sogenannte Login-Shell gestartet, und nur
dann werden diese Scripte durchlaufen.

Auf einem Deskopt-PC mit einer GNOME oder KDE als Oberfläche, wird beim
Start eines neuen Terminals die darin gestartet "/bin/bash" 
normalerweise
nicht mit der Option "-l" oder "--login" gestartet.

Du kannst das aber erzwingen, indem Du irgendwo in den Tiefen von
GNOME oder KDE den Aufruf des Terminals anpasst, und dort die Loginshell
Option für die bash setzt.

Habe ich aber noch nie gebraucht, ich packe einfach alles in das
.bashrc und gut.

Wie immer im Leben ist es ziemlich simpel, wenn man es mal kapiert
hat ;-)

von Windows-User (Gast)


Lesenswert?

Also wenn ich Dich richtig verstanden habe Andreas, dann ist das, was 
ich gemacht habe nicht die beste Lösung, da ich mir die PATH-Variable 
sozusagen immer wieder überschreibe.

Im Grunde geht es mir auch nur darum, dass Eclipse den Pfad kennt, bzw. 
der Pfad von CodeSourcery global bekannt gemacht wird.

Ich habe auch schon versucht (laut Internet) den Pfad mit 'sudo gedit 
/etc/environment/' einzufügen. Das funktioniert aber nicht (Eclipse 
findet den gcc trotzdem nicht)!

Frage: wie mach ich das also am Besten?

Gruß

von Andreas B. (Gast)


Lesenswert?

Windows-User schrieb:
> Ich habe auch schon versucht (laut Internet) den Pfad mit 'sudo gedit
> /etc/environment/' einzufügen. Das funktioniert aber nicht (Eclipse
> findet den gcc trotzdem nicht)!

Stimmt, /etc/environment habe ich noch vergessen. Die wird aber auch nur 
beim Login gelesen, also nur Ändern reicht nicht, da musst du dich schon 
einmal abmelden und neu einloggen.

Windows-User schrieb:
> Im Grunde geht es mir auch nur darum, dass Eclipse den Pfad kennt, bzw.
> der Pfad von CodeSourcery global bekannt gemacht wird.

Aber für sowas schreib ich mir gern mal einen winzigen Shell-Wrapper der 
nur für dieses Programm Variablen setzt. Ich hab es halt gern 
aufgeräumt.
1
#!/bin/sh
2
3
PATH="/home/abc/CodeSourcery/Sourcery_G++_Lite/bin:${PATH}"
4
5
exec eigentliches-programm "$*"

Das in eine Datei, ausführbar machen (chmod a+x programm.wrapper), an 
eine passende Stelle im Pfad kopieren (etwa /usr/local/bin) und statt 
eigentliches-programm aufrufen. Das "$*" sorgt dafür, dass alle 
Kommandozeilen-Argumente 1:1 weiter gereicht werden, also ist die 
Benutzung des Wrappers wirklich identisch zum Original.

von Windows-User (Gast)


Lesenswert?

/etc/environment funktioniert doch. Aber wie Andreas schreibt muss man 
sich ab- und anmelden.

Ich habs auch gerne aufgeräumt. Den Shell-Wrapper schreib ich mir auch - 
Danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.