C++ Programm in Linux-Terminal ausführen

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo Halbi,

am besten arbeitest Du mit einer Make-Datei, siehe man make. Insbesondere, wenn Dein Programm aus mehreren Teilen besteht.

Alternativ kannst Du mit einem Shell-Script arbeiten. Meines heißt "bin/Uebersetze.sh" mit dem Inhalt:

#!/bin/bash
OK=T
if [ -r $1.c ]; then
   SOURCE=$1.c
elif [ -r $1.C ]; then
   SOURCE=$1.C
elif [ -r $1.cpp ]; then
   SOURCE=$1.cpp
elif [ -r $1.CPP ]; then
   SOURCE=$1.CPP
else
   echo -e "\n\t? keine C-Datei '$1'?, Quelldatei ohne Erweiterung angeben\n"
   ls -l --color=tty $1*
   OK=F
fi
if [ $OK = T ]; then
   EXEC=$1
   gcc -ggdb $SOURCE -o $EXEC 2>&1 | tee $1.errors
fi

Aufruf

Uebersetze.sh DATEI.c

Das Script prüft die Lesbarkeit von DATEI.c und erzeugt die Datei DATEI ohne Erweiterung (ist unter Linux nicht erforderlich) , welche Du ohne weiteres ausführen kannst.

Eventuelle Fehlermeldungen werden sowohl auf den Bildschirm als auch in DATEI.errors geschrieben.

Viel Erfolg

Günter

Woher ich das weiß:eigene Erfahrung – Intensive Beschäftigung hiermit seit etlichen Jahren

den Code habe ich mir nicht angesehen.

Um daraus ein Binary zu machen, brauchst du einen C/C++ Compiler. Installiere dafür gcc und die Standard-Bibliotheken.

Danach sollte sollten gcc und auch c++ verfügbar sein.

Benutze c++ um deine Datei mit dem C-Code zu compilieren (bei Benutzung von gcc müssen einige Optionen angegeben werden, die mit c++ bereits vorhanden sind.

Als Ergebnis der Übersetzung liefert c++ (wenn nicht anders angegeben) die Binär-Datei a.out .

Die ist sofort ausführbar, ohne weiter Handlungen ( wie chmod )

Hier der gesamte Ablauf der Code sei in der Datei test.cc (der Name ist völlig gleichgültig, es würde z.B. auch "Test.mein-erstes" gehen)

cd dahin-wo-test.cc-steht

c++ test.cc

./a.out

Vergiss den Punkt vor /a.out nicht oder schreibe

 $PWD/a.out
Woher ich das weiß:Berufserfahrung – openSuSE seit 1995
HerzVonHessen  25.04.2012, 13:21

Hallo guenterhalt,

Die ist sofort ausführbar, ohne weiter Handlungen ( wie chmod )

Als nicht Programmierer muss ich Danke sagen für diese Information, wusste ich gar nicht.

lieben Gruß aus Zuhaus

0
guenterhalt  25.04.2012, 16:39
@HerzVonHessen

die Compiler-Bauer handeln schon nach der Devise "was Programmierer lieben"

Kleine Ergänzung: auch shell-Programm-Dateien müssen nicht unbedingt "ausführbar" sein, wenn man sie z.B. mit

bash Programm-Datei

aufruft.

0
GWBln  25.04.2012, 17:43
@guenterhalt

das 1. "Wort" ist der Interpreter ... damit wäre das nur korrekt, wenn es sich um bash-Kommandos in der "Programm-Datei" handelt.

Ein C-Programm ist nach Übersetzung und Binden aber ein ELF-Programm ... und so nicht aufrufbar!

0
guenterhalt  25.04.2012, 17:55
@GWBln

wenn man

"shell-Programm-Dateien"

schreibt, damit Binaries ausschließt und danach ein Beispiele ( z.B. heißt zum Beispiel) angibt, dann müssen doch nicht alle möglichen Fälle damit abgedeckt sein.

0

Hallo Halbi,

So wäre es leserlicher geworden:

#include <stdio.h>
#include <stdlib.h> int main(int argc, char** argv) { // Initialisiere dividers (Anzahl der Teiler)
int dividers = 0; // Wandle Eingabe zu int um
int figure = atoi(argv[1]); // Zählt die Teiler der eingegebenen Zahl
for (int i = figure; i >= 1; i--) { if (figure % i == 0) { dividers = dividers + 1; } else { } }
// Wenn dividers = 2, ist die gegebene Zahl prim, also:
// Abfragen von dividers, entsprechende Ausgabe
if (dividers == 2) { printf("%d ist prim.", figure); }
else { printf("%d ist nicht prim.", figure); } }

Aber wenn es Dir nur darum geht zu erfahren wie Du Deine fertig compilierte Binärdatei startest, dann hätte es den Code gar nicht gebraucht.

  1. Kompiliere Deinen Code
  2. Mach die Binärdatei ausführbar

.

chmod +x tollesprogramm.bin
  1. Starte das Programm:

.

sh tollesprogramm.bin

oder:

./tollesprogramm.bin

Das der Code auf dem Betriebssystem compiliert werden muss auf welchem die Binärdatei später ausgeführt werden soll ist klar.

lieben Gruß aus Zuhaus

guenterhalt  25.04.2012, 12:29
Das der Code auf dem Betriebssystem compiliert werden muss
auf welchem die Binärdatei später ausgeführt werden soll ist klar.

Das hast du bestimmt nur für Halbi so geschrieben, denn es ist im Allgemeinen falsch. Für meinen ARM9-Prozessor mit Linux compiliere ich Programme auf dem PC mit einem Cross-Compiler für dem ARM. Das sind, auch wenn beides Linux-Systeme sind, völlig unterschiedliche Prozessoren.

0

Compilen,Auführbar machen mit chmod a+x name, ./name ;)

mit "sudo cd name /bin/name" kannst du es von überall aufrufen :)

MfG

theGamer93  24.04.2012, 21:14

also das "./name" ist das ausführen der Datei und das "chmod a+x name" macht die binary ausführbar!

0
guenterhalt  25.04.2012, 12:21
@theGamer93

das ist aber eine sehr verkürzte Anleitung. Wo kommt die Datei "name" her? Nach einem Compiler-Lauf mit integriertem Linker ist das Binary immer ausführbar, was soll also dann noch chmod und dann auch noch mir a+x ?

0