[Linux] Programme ausführen
-
Hi Leute
Ich versuch mit meinem Programm über execl den compiler auszuführern der ein Programm compiliert:#include <iostream> #include <string> #include <unistd.h> using namespace std; int main(int argc, char *argv[]) { string path, comp="g++ -o ", name="Autoinstall", out; //getline(cin, name); path = comp + name + " install.cpp"; pid_t id = fork(); if(id == 0) { execl(path.c_str(), out.c_str()); } return 0; }
-
Wenn du schon [Linux] in dein Topic schreibst, wieso schreibst du den Thread nciht gleich in der Linux-Ecke?
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
[Linux] soll nur das system beschreiben ich könnte auch [win] davor schreiben.
-
Und Du hast auf Deinem Rechner ein Binary namens "g++ -o "?
-
g++ ist ja drauf un -o ist ein parameter. ist das ein fehler
-
Dann schreib das doch auch so. execl erwartet im ersten Parameter den Pfad zur ausführbaren Datei - und NUR den.
-
ich habs jetzt so geändert :
#include <iostream> #include <string> #include <unistd.h> using namespace std; int main(int argc, char *argv[]) { string path, comp="/usr/bin/g++", name="Autoinstall", out; //getline(cin, name); path = comp + " install.cpp -o " + name ; pid_t id = fork(); if(id == 0) { execl("/usr/bin/g++ ./main.cpp", out.c_str()); } return 0; }
er erstellt mir trotzdem keine datei dazu und main.cpp ist im gleichen ordner.
-
Lies doch mal was SG1 schreibt
SG1 schrieb:
Dann schreib das doch auch so. execl erwartet im ersten Parameter den Pfad zur ausführbaren Datei - und NUR den.
NUR den Pfad zur ausführbaren Datei!
execl("/usr/bin/g++", "g++", "main.cpp", "-o", out.c_str(), 0x0);
Siehe die Manpage
man: execl
-
mh da sagt mir der compiler :
main.cpp no input files
-
Lies doch einfach mal die man-page. Da steht zum Beispiel: "The first argument, by convention, should point to the filename associated with the file being executed."
-
so ich habs jetzt so geändert:
execl("/usr/bin/g++", "./g++", "./test.cpp", "-o", name.c_str(), out.c_str(), 0);
aber jetzt sagt er mir das:
g++: : No such file or directory ./test.cpp:1:20 error: iostream: No such file or directory ./test.cpp: In funktion 'int main()': ./test.cpp:6: error: 'cout' ist not a member of 'std' ./test.cpp:6: error: 'endl' is not a member of 'std'
-
Sieht so aus, als würde der C statt dem C++-Kompiler aufgerufen. Versuch mal, "g++" statt "./g++" zu schreiben.
-
dann kommt:
g++: : No such file or directory
-
versuch es doch mal so:
execl("/usr/bin/g++", "/usr/bin/g++", "./test.cpp", "-o", name.c_str(), out.c_str(), 0);
UND WEITER GEHT DIE RATETOMBOLA :p
-
so jetzt hab ich's die Ubuntu community konnte mir helfen:
execl("/usr/bin/g++", "g++", "./test.cpp", "-o", name.c_str(), static_cast<char*>(0));