Warum kann ich anscheinend eine in C ++ erstellte ausführbare Datei nicht öffnen, indem ich darauf doppelklicke?
Ich habe eine Datei, die ich von einer IDE ausgeführt habe, und möchte wissen, ob es eine Möglichkeit gibt, diese Datei so einzustellen, dass sie das Terminal öffnet, wenn Sie darauf klicken, genau wie es eine EXE-Datei unter Windows tut.
Möglichkeiten:
Ein C ++ - Code, den ich meinem Quellcode hinzufügen könnte, um dies zu ermöglichen.
Konfigurieren Sie My Pc, um es zu öffnen.
Ich versuche, Toolkits so weit wie möglich zu vermeiden. Ich habe kürzlich eine Anwendung unter Windows kompiliert. (Dank meines Cousins hat er einen PC mit Windows.)
Und es wäre großartig, wenn dies auch unter Windows unter Linux möglich wäre, da wir 2 Release-Ordner haben.
Und ich würde mir wünschen, dass diese einfache Terminal-basierte App läuft, ohne dass man Experte sein muss.
Ich habe diese Zeile hinzugefügt:
System ("Gnome-Terminal");
Es öffnet sich auf dem Terminal, zeigt aber nur den Dateipfad an, nicht das eigentliche Programm.
Antworten:
Ich würde erwarten, dass Sie das "ausführbare" Bit in der Datei setzen müssen, die vom Linux C ++ - Compiler ausgegeben wird. Ich glaube nicht, dass dies aus Sicherheitsgründen standardmäßig erfolgt.
Einfach "cd" in das Verzeichnis, in dem sich die erzeugte ausführbare Datei befindet
Ersetzen Sie "myexecutable" durch den Namen Ihrer Compiler-Ausgabe.
Versuchen Sie dann, es mit ./myexecutable auszuführen
Ich denke, dies sollte das Programm auch per Mausklick und über die Konsole "lauffähig" machen.
Wenn Sie ein "Skript" mit Befehlen ausführen müssen, können Sie Folgendes in einer Skriptdatei versuchen: Speichern Sie diese Datei als "myexe.sh" oder ähnliches:
Dann wieder benutzen
Um es so zu machen, dass Sie das Skript ausführen können, klicken Sie darauf.
quelle
Ich denke, die Wurzel Ihres Problems ist, dass Sie den Unterschied zwischen einem Terminal-Emulator und einer Shell nicht wirklich verstehen und wie Linux herausfindet, wie Prozesse gestartet werden.
Erstens gibt es den "Terminal-Emulator", in Gnome-basierten Umgebungen ist dies normalerweise Gnome-Terminal.
Dann gibt es die "Shell", in Linux ist dies normalerweise bash, obwohl andere Shells möglich sind.
Eine "Shell" läuft in einem "Terminal Emulator". Diese Unterscheidung ergibt sich aus dem Zeitalter der physischen Terminals, in dem ein physisches Terminal die Hardware ist, die Eingaben entgegennimmt, Text in Farben schreibt usw. Die Shell ist eine Software, die Benutzerbefehle verarbeitet und andere Prozesse basierend auf den angegebenen Befehlen verwaltet.
Heutzutage haben wir einen Allzweckbildschirm, auf dem alle Bilder angezeigt werden können. Daher verwenden wir kein physisches Terminal mehr, sondern "Terminalemulatoren", eine Software, die den Job eines physischen Terminals emuliert, und die Shell, die immer noch das ist gleiche alte Shell wie zuvor (nun, moderne Shells nutzen den Vorteil, dass sie sich in einem Software-Terminal-Emulator befinden und nicht durch die physische Beschränkung eines Papiers usw. beschränkt sind, aber die Kluft bleibt bestehen).
Eine "Shell" wird nicht immer in einem Terminal-Emulator ausgeführt. Es gibt auch grafische Shell wie Nautilus (Hinweis Hinweis, Nautilus ist der Name einer Meerestier mit einer großen Shell) oder Windows Explorer (nicht zu verwechseln mit Internet Explorer).
Sowohl in einer Befehlszeilen-Shell, z. B. bash, als auch in einer grafischen Shell, z. B. Nautilus, wird eine ausführbare Datei durch
execute
Setzen ihres Bits gekennzeichnet.In einer Befehlszeilen-Shell können Sie
ls -l
die Berechtigungsbits einer Datei anzeigen, z. B. bedeutet rwxrwxrwx, dass jeder das Programm lesen / schreiben / ausführen kann. rwxr-xr-- bedeutet, dass der Besitzer die volle Berechtigung hat, Personen in der Dateigruppe die Datei lesen und ausführen, aber nicht schreiben können und andere Personen nur die Datei lesen können. In Nautilus können Sie mit der rechten Maustaste auf eine Datei> Eigenschaften> Registerkarte Berechtigung klicken. Auf der Seite Berechtigungseigenschaften können Sie die Berechtigung der Datei wie in der Befehlszeilen-Shell festlegen.Eine Datei, deren Ausführungsbit gesetzt ist, wird als ausführbar behandelt und kann durch Ausführen von ./Dateiname (Befehlszeilen-Shell) oder Doppelklicken (Grafik-Shell) ausgeführt werden.
Zuletzt gibt es ein paar andere Feinheiten, wie eine Shell eine Datei ausführt. In den meisten Linux-Shells können Sie ein in python / perl / php / bash geschriebenes Skript "ausführen", das keine kompilierte ausführbare Datei ist. Da diese Dateien nicht von Haus aus ausführbar sind, benötigen sie einen Interpreter (zB Python-Interpreter). Anders als in der Windows-Shell (Explorer), bei der der aufzurufende Interpreter über die Dateierweiterung ermittelt wird. Linux-Shells ermitteln den korrekten Interpreter, indem sie sich die "Hashbang" -Zeile ansehen, die so aussieht
Wenn das Ausführungsbit einer Datei gesetzt ist und die Datei diese Hashbang-Zeile hat, ruft die Shell den Interpreter / usr / bin / python mit der aktuellen Datei als Argument auf.
Nautilus kann auch erkennen, wenn es sich bei einem Programm um eine Befehlszeilenanwendung handelt, und bietet Ihnen an, die Anwendung in einem Terminal auszuführen. Wenn Sie auf ein ausführbares Skript doppelklicken, werden Sie von Nautilus gefragt, ob Sie es in einem Terminal ausführen, ohne Terminal ausführen oder die Datei in einem Texteditor bearbeiten möchten.
quelle
Erstellen Sie ein Skript, um es in einem xterm oder so auszuführen. Stellen Sie sicher, dass Ihr Programm mit dem Benutzer interagiert, bevor Sie es beenden. (Funktioniert es, wenn Sie es in einem xterm ausführen? Funktioniert es, wenn Sie es in einer typischen Bash-Shell ausführen?)
quelle
In einfachen Worten:
chmod +x yourbinary
.stdout
), um sie standardmäßig auszuführen, können Sie nichts sehen.Für den letzteren Fall können Sie:
Erstellen Sie ein Skript, mit dem Ihre ausführbare Datei über einen Terminalemulator ausgeführt wird, z.
So führen Sie es auf Ihrem Standard - Terminal (falls Sie haben
exo
Befehl) oder explizit eine solche verwenden.Erstellen Sie eine
desktop
Datei, um sie auszuführen.Geben Sie ihnen eine benutzerdefinierte, spezielle Erweiterung wie
.exec
und konfigurieren Sie sie so, dass sie mit dem Befehl auf Vorschlag 1 (oder ähnlichem) in Ihren Dateierweiterungseinstellungen ausgeführt werden (sofern Ihr Betriebssystem diese Funktion unterstützt).quelle
Wenn Sie es unter Windows kompiliert haben und es sich um eine Exe handelt, sehe ich keinen Grund, warum ein Terminal unter Windows nicht geöffnet werden sollte, wenn Sie auf die ausführbare Datei doppelklicken. Sind Sie sicher, dass der Code nicht heruntergefahren wird (Segfault usw.)? Es wäre eine gute Idee, um sicherzustellen, dass das Programm nicht abstürzt.
quelle