Compiler allgemein, Compiling via Commandline
-
Halli hallo
Um eins vorweg zunehmen ich bin noch nicht so erfahren wie bestimmt viele von euch, und hoffe das ich daher mein anliegen klar schildern kann.
Es geht darum sachen auf einem USB-stick kompalieren zu können. Wie der compilername direckt ist weiss ich nicht jedenfalls vom Microsoft Visual Studio
jene GL.exe.So schrieb ich als test, ein paar cpp files die ich mit der GL.exe in ein verzeichniss auf meinem stick kopierte
Ich öffne mit cmd ein Commandofenster und gebe meinen pfad ein wo mein USB-stick liegt. Dort das Verzeichniss wo meine GL.EXE und die einzelnen cpp files zu finden sind.
G:\Kompiler> cl main.cpp print_it.cpp
die sache ist nun die, das in meiner main datei noch standarts includes aus C++ sind
**#include <iostream>
#include <string>
using namespace std;
**Doch als fehlermeldung bringt der kompiler dann
fatal error C1083: Cannot open include file: 'iostream': No such file or directory
Kann mir jemand weiterhelfen
-
Ich hab zwar kein Visual Studio, aber ich denke, wenn du nur den Compiler und nicht die Bibliotheken kopiert hast, können ja die Include-Dateien nicht gefunden werden. Du müsstest den ganzen anderen Kram auch noch mitnehmen. Was das alles ist, kann ich dir mangels MS-Compilern nicht sagen. Ich weiß nicht mal, ob das mit VC überhaupt funktioniert. Mit MinGW gehts, aber da brauchst du auf jeden Fall einen 512 MB Speicherstick.
-
Nur wie verweise ich dann auf die bibliotheken? Gibt es irgendwie eine parameter liste für den Befehl? Damit ich weiss wie ich die .lib´s meinem Kompiler mitteile?
-
Was bringt dir der Compiler auf einem USB-Stick, wenn du ihn mit Dateien auf deiner Platte verbindest?
Wie gesagt, von MS-Compilern hab ich keine Ahnung, aber evt. gehts, wenn du das #include entsprechend anpasst:#include "C:\mein_compiler_pfad\include\iostream" //oder so.
Warscheinlich hängt er dann wieder an andererer Stelle. Aber noch mal: das ganze ist doch völliger Unsinn. Besorg dir nen Compiler, den du vollständig auf einen Stick packen kannst oder lass es bleiben. Du kannst auch versuchen, VC direkt auf dem Speicherstift zu installieren. Komplett, ohne rumzupfuschen.
-
Es müssen die Umgebungsvariablen gesetzt werden. Dazu einfach mal unter "Start->Programme->MS VS->Tools->MS VS Command Prompt" ausführen und in der Konsole die Arbeit erledigen.
-
kynarion schrieb:
Wie gesagt, von MS-Compilern hab ich keine Ahnung, aber evt. gehts, wenn du das #include entsprechend anpasst:
#include "C:\mein_compiler_pfad\include\iostream" //oder so.
ARGH! Nein. So macht man das nicht und man sollte eigentlich nicht auf die Idee kommen, das so zu machen.
Dafür gibt es Compiler-Flags. Ich kenne die des VC++ nicht, aber dafür hat das Ding ja eine Dokumentation.
-
das visual bietet eine batch datei, die man auf konsole startet und die die umgebungsvariablen automatisch setzt. dann klappts auch mit den pfaden
ansonsten halt die entsprechenden in den pfad temporär aufnehmen.
-
Mit MinGW gehts, aber da brauchst du auf jeden Fall einen 512 MB Speicherstick.
Quatsch. Wenn du MinGW herunterlädst und entpackst, macht das gerade mal 55,6 MB aus.
An Exitus222:
Wenn's nicht unbedingt der Visual C++-Compiler sein muss, nimm MinGW. Lad dir auf MinGW.org einfach folgende Dateien herunter:
gcc-core-3.4.2-20040916-1.tar.gz
gcc-g++-3.4.2-20040916-1.tar.gz
mingw-runtime-3.9.tar.gz
w32api-3.6.tar.gz
binutils-2.15.91-20040904-1.tar.gz
Das ist das, was du minimal brauchst. Damit kannst du Konsolen- und Windows-Anwendungen schreiben. Extrahiere einfach alle Dateien in einen Ordner und schon läuft das Ding. Ohne Installation, ohne Konfiguration. Du hast sofort einen klasse standardkonformen Kommandozeilencompiler.
-
Ach ja, benutzen würde man den Compiler dann übrigens folgendermaßen (unter der Voraussetzung, dass X: dein USB-Laufwerksbuchstabe ist und sich das ganze Zeug dort im Ordner "MinGW" befindet, während deine eigens geschriebenen Quellcodedateien im Ordner "Meine Programme" liegen:
X:\Meine Programme>X:\MinGW\g++ -o Programmname Quellcode1.cpp Quellcode2.cpp
-
Danke für die Zahlreichen antworten.
Aber das problem ist leider komplexer. Dieses Programm soll auf dem USB-stick laufen damit es portabel ist. Das heist der User führt das programm auf dem Stick aus und kann so daten erstellen die für eine bestimmte anwendung von nöten sind, ohne das Programm auf der Festplatte installiert haben zu müssen.
Von diesem Programm jedoch wird intern der Compiler von MSV studio aufgerufen. Allderdings von der platte aus.
So wenn ich nun dieses Programm lauffähig auf einen Stick implementieren will, muss ich zwangsläufig pfade verbiegen. Allein schon jenen sich den komplier nicht aus dme visualstudio zuholen, sondern vom stick.
Tue ich das aber vom stick fehlen eine ganz reihe an bibiliotheken die ebenfalls mit rauf müssen, und eventuell??? dem Kompiler per commandozeile??? mit übergeben werden müssen?
ES hies vorhin dafür gibt es dokus, über den MSV kompiler... wüste da jemand einen link?
-
Besserwisser schrieb:
Mit MinGW gehts, aber da brauchst du auf jeden Fall einen 512 MB Speicherstick.
Quatsch. Wenn du MinGW herunterlädst und entpackst, macht das gerade mal 55,6 MB aus.
Bei mir sieht das so aus:
bin 33 MB include 14 MB share 5 MB mingw32 5 MB libexec 26 MB = 83 MB
Dazu kommen noch ein paar Ordner wie man, doc und info dazu. Gut, 512 ist übertrieben (ich hab in meinem MinGW-Ordner noch WxWidgets), aber ein 128 sollte es ja schon sein.
-
Exitus222 schrieb:
ES hies vorhin dafür gibt es dokus, über den MSV kompiler... wüste da jemand einen link?
MSDN?
Ansonsten, die Verzeichnisse für Include Dateien liest der MSC aus der Umgebungsvariable INCLUDE, die Verzeichnisse für Lib Dateien aus der Umgebungsvariable LIB. Verzeichnisse für Binarys kann man ganz normal über PATH hinzufügen.
-
Hi groovemaster, bist du dir da sicher? das es diese Umgebungsvaribalen sind?
Habe das gerade nachgeschaut, doch finde ich keinen verweis auf MVS-libs in diesen.Dort müssen anscheinend auch nocht libs übergeben werden allein schon von dieser fehlermeldung
fatal error C1083: Cannot open include file: 'iostream': No such file or directory
-
@ kynarion
Was für dateien hast du den alles bei deinem MINGW mit darin, ich habe gerade meine ordner mit deinen verglichen und diese sind gut um die hälfte kleiner die meisten.
Hast du dir die selbstzusammen gestöpselt oder den installer verwendet. Wenn ja mit welchen einstellungen?
grüße
Exitus
-
An kynarion:
In meinem MinGW-Ordner befindet sich genau alles das, was man erhält, wenn man folgende Dateien extrahiert:
gcc-core-3.4.2-20040916-1.tar.gz
gcc-g++-3.4.2-20040916-1.tar.gz
mingw-runtime-3.9.tar.gz
w32api-3.6.tar.gz
binutils-2.15.91-20040904-1.tar.gz
Und das sind 55,6 MB.
-
Ehrlich gesagt, hab ich keine Ahnung mehr wie ich das installiert hab (schon ewig her), aber kann gut sein, dass ich einmal beim Setup einfach alles installiert hab.
Ich kann mich noch erinnern, wie ich mich einmal geärgert hab, als ich vor dem wie-soll-ich-diese-zehntausend-Dateien-runterladen-Problem gestanden bin, das hier schon öfter diskutiert worden ist. Dann hab ich so lange im Internet gesucht, bis ich eine Seite gefunden hab, auf der ein Professor für seine Kollegen ein fertiges MinGW-Paket zum Download bereitgestellt hat. Das hab ich runtergeladen (und versucht auf einen Speicherstick (128er ?) zuentpacken, was aber nicht geklappt hat). Aber ob diese Version immer noch die ist, die jetzt auf meinem Rechner liegt? Keine Ahnung.
-
Exitus222 schrieb:
Hi groovemaster, bist du dir da sicher? das es diese Umgebungsvaribalen sind?
Habe das gerade nachgeschaut, doch finde ich keinen verweis auf MVS-libs in diesen.Hast du mal die Pfade verglichen? Die, die in den Umgebungsvariablen zu finden sind, mit denen, in denen sich die Include- und Lib-Dateien letztendlich befinden?