PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C/C++-Programme unter linux schreiben ?



13-05-2000, 22:46
Hallooo

Bin von Win zu Linux (SuSE 6.4) gewechselt,
doch habe keine Ahnung wie ich meinen Quellcode unter Linux eingeben (compilieren)
kann. Meine hauptsächlich Konsolen-Anwendungen (nichts KDE oder Gnome mässiges).
Und wie kann ich sie dann starten ?

Tut mir leid für die blöden Fragen doch weiss einfach nicht weiter
danke vielmals schon mal im voraus

bye

14-05-2000, 08:09
Hi!!!
das ist erstens keine blöde Frage und zweitens kein Problem. http://www.linuxinfoserver.de/ubb/smile.gif
also, zuerst gibst du mal deinen Programm-Code ein. kannst irgendnen Texteditor hohlen. ich benutz den KWrite. den kannste dir dann noch so einstellen, daß er dir den Quellcode schön übersichtlich färbt.
die datei speicherst du dann mit der endung .cpp oder .c.
zum compilieren wechselst du jetzt auf der console (oder in der xconsole) in das entsprechende verzeichniss, in dem die datei liegt. jetzt gibst du z.B.
g++ main.cpp -o test
ein.
das erzeugt aus der quelldatei main.cpp die datei test, welche ausführbar ist. um die jetzt zu starten, gibst du in dem verzeichniss in dem die ausführbare datei liegt
./test
ein. und schon solltest du sehen wie dein Programm arbeitet http://www.linuxinfoserver.de/ubb/smile.gif

cu
Peter

Mat
24-08-2004, 17:28
Da ich zufällig gerade auf genau dasselbe Problem gestossen bin wie ich bereits hier lese habe ich natürlich gleich den Rat der netterweise gegeben wurde befolgt. Ich meine das Programme schreiben unter Linux.

Allerdings habe ich da ein Problem:
Es klappt alles. AUch mein Compilat wird erzeugt und liegt als ausführbare Datei vor. Jetzt wechsele ich in die Konsole und gebe ./<dateiname> ein.
Aber die Bash meldet dass ich Keine Berechtigung habe.
Auch wenn ich als root eingeloggt bin kommt diesselbe Meldung.

Ist wahrscheinlich ein peinlicher Fehler aber kann mir da vielleicht jemand weiterhelfen?
Für Antworten schon mal vielen Dank

peschmae
24-08-2004, 17:49
mach mal ein "ls -l <dateiname>" dann siehst du wies mit den Berechtigungen steht.

Damit du die auch ausführen kannst setzt du die Rechte am besten auf 755 - d.h. les, schreib und ausführen für dich und lesen und ausführen für alle:
chmod 755 <dateiname>

Allerdings sollte das GCC schon von selber erledigen - d.h. die Datei sollte nach dem Compilieren schon ausführbar gemacht worden sein. Bist du sicher das nicht doch da etwas falsch gelaufen ist?

MfG Peschmä

Mat
24-08-2004, 18:07
*grmpf
danke für die schnelle antwort.

Echt komisch.

Hab die Rechte auf 755 gelegt.
aber das ändert nichts.

Also mein Vorgehen nochmal. Vielleicht hab ich nen Denkfehler:
Mit kwrite schreibe ich ein kleines c programm das folgendermassen aussieht:

#include <stdio.h>

main()
{
printf("hello, world \n");
}

Hoffentlich liegt nicht schon hier der Fehler :-(

So jetzt speicher ich die Datei als test.c ab.
Wechsel in die Konsole und gebe ein: g++ test.c -o neu
Und es entsteht eine ausführbare Datei namens neu .

Tja und wenn ich jetzt in der Konsole eingebe: ./neu

Dann kommt die Meldung Keine Berechtigung.

Hab beide Dateien auf 755 festgelegt......
Hmm.

Naja trotzdem vielen Dank für die Hilfe!

anda_skoa
24-08-2004, 19:41
Vielleicht ist das Filesystem non-exectuable gemountet worden.

Ciao,
_

Mat
25-08-2004, 10:09
Öhm......danke..... :eek:

ich glaube in der Hinsicht bin ich noch zu unerfahren.
Hmm, wie kann ich das non-executable Filesystem unmounten?

ContainerDriver
25-08-2004, 11:01
Öhm......danke..... :eek:

ich glaube in der Hinsicht bin ich noch zu unerfahren.
Hmm, wie kann ich das non-executable Filesystem unmounten?
Hi.
Nein, du musst nicht das non-executable Filesystem unmounten (das gibt es nämlich nicht), sondern das Filesystem im "executable-Modus" mounten.
Am besten du postest mal deine mount-Parameter (evtl. auch die Datei /etc/fstab) und sagst uns, um welche Partition es sich handelt, auf der du versuchst, das Programm zu starten (evtl. reicht auch das Verzeichnis).

Gruß, Florian

Mat
25-08-2004, 11:20
*lach :) ok wieder eine Erfahrung mehr!
Danke Flo für die schnelle Antwort erstmal..

________________________________________________fs tab______________________________

/dev/hdc12 / reiserfs acl,user_xattr 1 1

/dev/hdc2 /windows/C vfat users,gid=users,umask=0002,iocharset=utf8 0 0

/dev/hdc3 /windows/D vfat users,gid=users,umask=0002,iocharset=utf8 0 0

/dev/hdc4 /windows/E vfat users,gid=users,umask=0002,iocharset=utf8 0 0

/dev/hdc5 /windows/F vfat users,gid=users,umask=0002,iocharset=utf8 0 0

/dev/hdc6 /windows/G vfat users,gid=users,umask=0002,iocharset=utf8 0 0

/dev/hdc7 /windows/H vfat users,gid=users,umask=0002,iocharset=utf8 0 0

/dev/hdc8 /windows/I vfat users,gid=users,umask=0002,iocharset=utf8 0 0

/dev/hdc9 /windows/J vfat users,gid=users,umask=0002,iocharset=utf8 0 0

/dev/hdc10 /windows/K vfat users,gid=users,umask=0002,iocharset=utf8 0 0

/dev/hdc11 swap swap pri=42 0 0

devpts /dev/pts devpts mode=0620,gid=5 0 0

proc /proc proc defaults 0 0

usbfs /proc/bus/usb usbfs noauto 0 0

sysfs /sys sysfs noauto 0 0

/dev/cdrecorder /media/cdrecorder subfs fs=cdfss,ro,procuid,nosuid,nodev,exec,iocharset=ut f8 0 0

/dev/cdrecorder11 /media/cdrecorder11 subfs fs=cdfss,ro,procuid,nosuid,nodev,exec,iocharset=ut f8 0 0

/dev/dvd /media/dvd subfs fs=cdfss,ro,procuid,nosuid,nodev,exec,iocharset=ut f8 0 0

/dev/fd0 /media/floppy subfs fs=floppyfss,procuid,nodev,nosuid,sync 0 0

________________________________________fstabende_ _____________________________

Ok das wäre die fstab gewesen.
Ich versuche das Programm auf der Partion

/dev/hdc9 /windows/J vfat users,gid=users,umask=0002,iocharset=utf8 0 0

zu starten.

Tja und meien Mount-Parameter.. hab im Forum gesucht wie man die bekommt aber, wo kann ich die finden?

Danke :o

peschmae
25-08-2004, 13:57
Das was in der fstab steht sind die Mount-Parameter. Nur in einer etwas anderen Form.

Sieht für mich soweit eigentlich Ok aus (auch wenn ich die umask-Sachen ständig durcheinander bringe).
Was sagt denn ein "ls -l <programmname>"?

MfG Peschmä

Mat
25-08-2004, 14:11
Ok vielen dank!!!!!!

ein
ls -l <programmname>
sagt folgendes:

also die Quelldatei ist: hello.c
und da sagt er

-rwxrwxr-r 1 root users ....
Beim Compilat dasselbe

Sollte beides nicht auf 755 sein?
Also
-rwxr-xr-x

?

Danke...........

ContainerDriver
25-08-2004, 17:15
So:
mach aus


/dev/hdc9 /windows/J vfat users,gid=users,umask=0002,iocharset=utf8 0 0

ein


/dev/hdc9 /windows/J vfat users,gid=users,umask=0002,iocharset=utf8,exec 0 0

, dann dürfte es funktionieren.

Gruß, Florian

anda_skoa
25-08-2004, 17:19
Am Besten einfach in deinem Homeverzeichnis bzw einem Unterverzeichnis davon arbeiten.

Du kannst dann immer noch explizit auf die Windows Partitionen kopieren, wenn du das benötigen solltest.

Ciao,
_

peschmae
25-08-2004, 17:49
-rwxrwxr-r 1 root users ....
Beim Compilat dasselbe


Das ist irgendwie merkwürdig. Vor allem der Schluss davon. Ich würde es mal mit umask=002 in /etc/fstab versuchen (eine 0 weniger als jetzt).

Ansonsten hältst du dich am besten an den Tipp von anda_skoa.

MfG Peschmä

Mat
25-08-2004, 19:09
So........
vieeeeelen Dank. Für die Hilfe. Echt super. Und gelernt hab ich schon echt viel die Zeit jetzt.

Nur leider muss ich sagen gehts immer noch nicht. Die fstab ist korrekt geändert. Aber die Meldung kommt immer noch.
Keine Berechtigung.
Hab auch versucht auf anderen Partitionen zu arbeiten geht nicht.

Tja............scheint irgendwie ein einzelfall zu sein bei mir. Wie immer
:confused:

Naja. Trotzdem Danke für alles. Falls jemand noch Ideen hat. Ich bin offen für alles ;)

Gruß Mat

ContainerDriver
25-08-2004, 20:20
Du hast die Partition nach den Änderungen aber schon neu gemountet?

Mat
25-08-2004, 21:14
also hab ich vorhin nicht geschaut aber jetzt nochmal versucht einzuhängen und es kommt die meldung;
mount: /dev/hdc9 ist bereits eingehängt oder /windows/J wird gerade benutzt.
und
mount: Laut mtab ist /dev/hdv9 schon auf /windows/J eingehängt

also denke ich, da ich sie nicht benutze, dass sie schon eingehängt ist.

Geht aber trotzdem nicht.

:mad:

ContainerDriver
25-08-2004, 22:32
Hast du den Rechner inzischen neu geboot, oder war der die ganze Zeit an?
Wenn ja, umounte die Partition & mounte sie dann wieder & probier nochmal.
Wenn nein &es funktioniert noch nicht, dann gehts so leider auch nicht.

Gruß Florian

Mat
26-08-2004, 08:01
*lach
Es funktioniert.

Ok, wer jetzt nicht weiß dass ich neu auf Linux umgestiegen bin.............
Peinlich.
Aber ok. Ich hab viel gelernt und werd jetzt so richtig loslegen ;)

Sorry, hab irgendwie nicht drangedacht neu zu booten. Mein Fehler.
Trotzdem vieeeeeeeeeeeeeeeeeeeelen Dank für die eilige und professionelle Hilfe!!!

Auf bald in neuen Fragen ;)

Gruß Mat

peschmae
26-08-2004, 09:52
Naja, unter Linux muss man ja netterweise meistens nicht neu booten. ;)

MfG Peschmä

ContainerDriver
26-08-2004, 10:20
Naja, unter Linux muss man ja netterweise meistens nicht neu booten. ;)

MfG Peschmä
Genau, du hättest die Partition einfach umounten & dann neu mounten müssen, das wäre aufs gleiche rausgekommen.

Gruß, FLorian

peschmae
26-08-2004, 12:51
weil da was zugriff musst du erst "lsof | grep <irgendwas>" machen um zu gucken wer das macht und den dann entfernen...

Von dem her ist ein Reboot wohl einfacher hinzukriegen.

MfG Peschmä

Mat
26-08-2004, 12:58
Alles sehr cool.

Ja klingt auch logisch mit dem erstigen unmounten und dann wieder mounten.
Ajajaj...........was man noch alles lernen darf ;)

Danke nochmals an Alle :)