Ich erstelle eine tragbare Linux-C ++-Umgebung für einen Kurs, um Sudo Bürokratie auf unserer Website zu vermeiden und über eine vorgefertigte Lösung mit VSCODE enthalten zu sein. Ich habe dies mit Erfolg für einen Python-Kurs und einen Julia-Kurs gemacht (siehe Juliawin), aber G ++ scheint ein anderes Tier zu sein. libblas-dev ) zusammen mit ihren Abhängigkeiten und extrahierte es in ein Pseudo-Root-Verzeichnis, z.
Umgebungsumschlagstruktur
is. In diesem Skript habe ich eine Reihe von Umgebungsvariablen für unsere Build -Tools festgelegt, um alle in diesem System enthaltenen Header und Bibliotheken aufzunehmen. Insbesondere habe ich ld_library_path , bibliothek_path , c_library_path , cplus_library_path , cmake_library_path , include , c_include>, cplus_include, , cmake_paths>, cmake_pathops, festgelegt. Cmake_prefix_path , path , cc und cxx . Z.B. Wenn ich welches g ++ eingeben kann, erhalte ich den tragbaren Ort:
Code: Select all
/home/emdw/Downloads/portable_cpp/linux/usr/bin/g++
< /code>
Ermöglicht mir auch, dass der Linker mit allen gebündelten Bibliotheken, freigegebenen Bibliotheken und Headern verlinkt wird. Ld
Code: Select all
$ g++ hello.cpp -o hello
/usr/bin/ld: cannot find /usr/lib/x86_64-linux-gnu/libc_nonshared.a
collect2: error: ld returned 1 exit status
Wenn ich einen Symlink aus meinem gebündelten libc_nonshared.a zum Systempfad:
mache
Code: Select all
sudo ln /home/emdw/Downloads/portable_cpp/linux/usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib/x86_64-linux-gnu/libc_nonshared.a -s
kompilieren
Code: Select all
$ g++ hello.cpp -o hello
$ ./hello
Hello world!