Ich habe vor kurzem eine ältere Version von GCC erstellt und in meinem Home-Verzeichnis (spec. ~/local/gcc-5.3.0
) installiert. Ich benötige diesen Compiler jedoch nur für CUDA-Projekte und werde die restliche Zeit mit dem Systemcompiler (GCC 6.2.1) arbeiten. Also, ich denke, ich muss einen Weg finden, um zwischen diesen zu wechseln, wann immer es benötigt wird, und auf eine Weise, die auch die Bibliothek ändert und Pfade entsprechend einfügt.Zwischen verschiedenen GCC-Versionen wechseln
Ich verstehe, dass update-alternatives
ist eine Möglichkeit, dies zu tun, aber es scheint, root Berechtigungen zu erfordern, die eingerichtet werden, die ich nicht habe.
Das nächste Beste, was könnte sein, eine Shell-Funktion in .bashrc
zu schreiben, dass die folgenden gewährleistet:
Jeder Anruf schaltet zwischen System und lokalem gcc
Jedes Mal, wenn ein Schalter gemacht wird, sie paßt Pfade, so dass wenn lokale gcc gewählt wird, sucht es zuerst nach Header-Dateien und Bibliotheken, die von selbst installiert wurden, bevor in Systempfade wie oder
usr/local/lib
suchen. Eine vorherige answer schlägt vor, dass die ÄnderungLD_LIBRARY_PATH
ausreichend sein sollte, weil eine GCC-Installation "weiß", wo ihre eigenen Header-Dateien und statische Bibliotheken sind (ich bin mir nicht sicher, ob es richtig ist, dachte ich, ich müssteCPATH
ändern, usw.).
Ist das oben der beste Weg, dies zu erreichen? Wenn ja, welche Pfade sollte ich bei der Implementierung einer solchen Funktion setzen?
Mein persönlicher Ansatz dazu ist nicht sehr anspruchsvoll: Ich habe ein Shell-Skript, das nur die dir CUDA bin fügt und die passende gcc bin dir zu $ PATH. Eigentlich habe ich mehrere Skripte, um verschiedene CUDA-Versionen herumzuhalten. Wenn ich nicht mehr mit CUDA arbeite oder zu einer anderen Version wechseln möchte, öffne ich eine neue Shell. – tera
Sie erwähnen, nur 'bin' Verzeichnis von gcc zu' PATH' hinzuzufügen. Ist es nicht notwendig, LD_LIBRARY_PATH zu ändern, wenn nicht die Include-Verzeichnisse? – rahul1210
Sowohl nvcc als auch gcc wissen, wo sich ihre Bibliotheken befinden. Daher ist es einfach ausreichend $ PATH zu ändern. – tera