Forum: PC-Programmierung Erste Schritte mit C unter Debian/Linux


von Rainer U. (r-u)


Lesenswert?

Hallo, ich will mich einarbeiten in die C-Programmierung unter Debian. 
Dieser Thread soll zum Erfahrungsaustausch / Hilfestellung dienen, falls 
jemand mal etwas ähnliches vor hat.

Mein Fernziel ist Audiobearbeitung/-Verarbeitung mit einer Seagate 
Dockstar, siehe hier:

Beitrag "USB Audio Interface selbst ansteuern"
Beitrag "Empfehlung für hardwarenahe Programmierung in Linux?"

Es ist noch ein weiter Weg, aber man beginnt ja immer mit dem ersten 
Schritt.

Ich habe mir also mit VMWare eine virtuelle Maschine mit Debian drauf 
installiert. Danach download eclipse mit CDT - eclipse mag die 
vorinstallierte Java-Runtime vom Debian nicht - also Java6 von Sun 
heruntergeladen und installiert.

Was mir so aufgefallen ist:

1) Desktopverhalten von Debian: 1GB Ram sollte man der VM schon gönnen - 
der Desktop läuft auch mit 256MB, aber Eclipse swapt dann nur noch. Die 
Auflösung habe ich eingestellt mit 1280*1024 - beim ersten einstellen 
sah es ok aus, aber jetzt nach dem reboot ist der Bildschirm ausgefüllt, 
aber alles riesig.. naja, gut für die Augen, aber soll das so sein? :-)

2) VMware hat oben so eine "Verschwindeleiste" - und die 
Debian-Menüleiste ist auch oben. Das führt dazu, daß die Maus öfter 
nicht weiß, ob sie noch in der VM ist oder nicht - kann man die 
Menüleiste auch woandershin tun?

3) ich habe die Pakete heruntergeladen, aber an den Desktop kann man 
sich nicht mit root anmelden (hat ja auch seinen Grund) - Aber gibt es 
eine Empfehlung, was ich mit meinem eigenen Benutzer tun soll, damit er 
mehr Rechte hat? Ich hab jetzt die root - Konsole benutzt, und als root 
nach usr gewechselt, Verzeichnisse angelegt für java und eclipse, 
dateien als root reinkopiert, chmod ausgeführt. Wäre einfacher / 
schneller mit meinem Benutzer ("rainer") gewesen - geht das irgendwie?

Aber es gibt auch schöne Effekte, z.B.

4) ich kann das Eclipse-Verzeichnis verschieben, wohin ich will, es 
startet trotzdem freiwillig und weiß seinen Workspace noch. Was für eine 
Wohltat gegenüber Windows mit seinen dll registrierungs- und assembly 
cache- Sachen!

Jetzt habe ich wieder ein bischen Zeit und gucke die Tutorials durch, 
hab mal das berühmte C-Programm "hello world" aufgemacht und versucht zu 
kompilieren. muß noch rausbekommen, wo der die Compilerausgabe anzeigt 
und warum er "make" nicht ausführen kann

cannot run program make (unknown reason)

Vielleicht habt Ihr ja eine Idee bzw. das ist ein 
standard-Anfängerfehler? Als ich das zum letzten mal gemacht habe, waren 
die Programme noch alle einzeln an der Konsole, und man hatte dann so 
eine a.out-datei.. lange her! :-)

von Rolf Magnus (Gast)


Lesenswert?

Rainer Unsinn schrieb:
> Was mir so aufgefallen ist:
>
> 1) Desktopverhalten von Debian: 1GB Ram sollte man der VM schon gönnen -
> der Desktop läuft auch mit 256MB, aber Eclipse swapt dann nur noch.

Das liegt dann eher an Eclipse, nicht an Debian allgemein.

> Die Auflösung habe ich eingestellt mit 1280*1024 - beim ersten
> einstellen sah es ok aus, aber jetzt nach dem reboot ist der Bildschirm
> ausgefüllt, aber alles riesig.. naja, gut für die Augen, aber soll das
> so sein? :-)

Hast du die vmware tools nicht installiert?

> 2) VMware hat oben so eine "Verschwindeleiste" - und die
> Debian-Menüleiste ist auch oben.

Bei Gnome ja.

> Das führt dazu, daß die Maus öfter nicht weiß, ob sie noch in der VM ist
> oder nicht - kann man die Menüleiste auch woandershin tun?

Ich kenne mich mit Gnome nicht so aus, aber du kannst auch die 
"Verschwindeleiste" woanders hin tun.

> 3) ich habe die Pakete heruntergeladen, aber an den Desktop kann man
> sich nicht mit root anmelden (hat ja auch seinen Grund) - Aber gibt es
> eine Empfehlung, was ich mit meinem eigenen Benutzer tun soll, damit er
> mehr Rechte hat?

Die soll er nicht haben.

> Ich hab jetzt die root - Konsole benutzt, und als root nach usr
> gewechselt, Verzeichnisse angelegt für java und eclipse, dateien als
> root reinkopiert, chmod ausgeführt.

Warum?
Außerdem ist /usr eigentlich für die Programme gedacht, die über das 
Paketmanagement installiert wurden (Warum hast du das eigentlich nicht 
verwendet?). Von Hand installierte Sachen sollten in /usr/local oder 
/opt/<programmname> installiert werden.

> Wäre einfacher / schneller mit meinem Benutzer ("rainer") gewesen - geht
> das irgendwie?

Nicht ohne das System ganz fies zu "verbiegen".

> Jetzt habe ich wieder ein bischen Zeit und gucke die Tutorials durch,
> hab mal das berühmte C-Programm "hello world" aufgemacht und versucht zu
> kompilieren. muß noch rausbekommen, wo der die Compilerausgabe anzeigt
> und warum er "make" nicht ausführen kann
>
> cannot run program make (unknown reason)
>
> Vielleicht habt Ihr ja eine Idee bzw. das ist ein standard-
> Anfängerfehler?

make nicht installiert?

von Rainer U. (r-u)


Lesenswert?

Hallo Rolf und danke für Deinen Beitrag! VMwareTools habe ich noch nicht 
drauf (hatte ich vorher beim ersten Versuch.. peinlich!) :-)

Wie tue ich die VM-Ware-Leiste woanders hin? Hab noch nie sowas 
gesehen..

Die Paketinstallation habe ich versucht, aber mit apt-get -install 
eclipse hat es nicht funktioniert, und dann bin ich einfach der 
Empfehlung von Andreas gefolgt, ein Paket herunterzuladen.

Du meinst im CDT ist kein "make" drin? Das würde mich nun sehr wundern..

Und dass ich die Verzeichnisse nicht wie empfohlen benutzt habe, leigt 
einfach daran, daß ich die Empfehlung nicht kannte. Außer die 
Java-Runtime, die wurde empfohlen nach /usr/java zu installieren.

von ... .. (docean) Benutzerseite


Lesenswert?

du kannst eclipse auch ohne probleme in deine home dir 
runterladen/installieren und von dort ausführen, dann hast du alle 
Rechte.

Dann funzt auch der Update Prozess von Eclipse super

EDIT:
http://wiki.ubuntuusers.de/GCC

so kommst an make und den gcc

von Lukas K. (carrotindustries)


Lesenswert?

Eclipse ist als Paket verfügbar: 
http://packages.debian.org/sid/eclipse-cdt

von Rainer U. (r-u)


Lesenswert?

So, wieder ein bischen Zeit gehabt und ein bischen weiter: Das Beispiel 
auf dem Link von docean funktioniert, ich kann also "zu Fuß" mit gcc 
kompilieren und erhalte ausführbare Dateien.

Ich mußte mir vorher die build-essentials installieren, die haben 
tatsächlich noch gefehlt. Finde ich ungewöhnlich, dass sowas bei 
Eclipse+CDT, also einer C-Entwicklungsumgebung, nicht drin ist.

Leider verweigert mir Eclipse das compilieren noch, weil "make" nicht 
gestartet werden kann. Ich hab mal gesucht - es steht unter /usr/bin, 
und der Pfad zeigt da auch hin / ich kann es von der Konsole aus 
aufrufen.

Rolf hatte ja auch angemerkt, daß ich Eclipse lieber als Paket hätte 
installieren sollen, aber welchen Befehl hätte ich angeben sollen 
anstelle von

"apt-get -install eclipse" ?


Die VMWare-tools wollen auch noch konfiguriert werden, ich soll dazu das 
script vmware-config-tools.pl aufrufen. Dieses will dann erstmal einen 
anderen Compiler (gcc 4.1.3 will es, gcc 4.3.2 hab ich) - das kann man 
ignorieren, aber dann will es wissen, wo die C header dateien für meinen 
aktuellen kernel liegen - bei der Frage muß ich passen. sie liegen 
jedenfalls nicht unter /usr/src/linux/include, wie das script vermutet. 
Evtl. liegen sie nichtmal auf meinem System (ich hab den Kernel ja nicht 
bei der Installation selbst kompiliert, oder?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Rainer Unsinn schrieb:
> Rolf hatte ja auch angemerkt, daß ich Eclipse lieber als Paket hätte
> installieren sollen

Ist bei Eclipse nicht zu empfehlen, weil die Pakete alt sind und Eclipse 
ein eigenes Updatesystem enthält.

von Klaus W. (mfgkw)


Lesenswert?

apt-get -install eclipse

von hanz (Gast)


Lesenswert?

http://www.alsa-project.org/main/index.php/Main_Page

apt-get install alsa


vielleicht findest du hier schon jemand, der sowas gemacht hat, wie du 
es machen willst

http://www.alsa-project.org/main/index.php/Applications

von hanz (Gast)


Lesenswert?


von Klaus W. (mfgkw)


Lesenswert?

Klaus Wachtler schrieb:
> apt-get -install eclipse

Äh, irgendwie ist das nicht das, was ich schreiben wollte.

Ich wollte nur sagen, daß vor dem install kein - hinkommt.
Also: apt-get install ...

von Wayne (Gast)


Lesenswert?


von docean (Gast)


Lesenswert?

apt-get search kernel-header

eclipse würdfe ich immer nach /home installieren, wegen der patsches...

btw warum nutzt du nicht aptitude apt-get ist doch veraltet...oder seh 
ich das jetzt falsch??

von Rainer U. (r-u)


Lesenswert?

@hanz
Danke, die Links sind sehr zielführend! Jetzt hab ich wieder was zu 
lesen.. :-) Hast Du zufällig auch ein Beispiel im Kopf, wie man von 
einem Mikrofon die Verstärkung einstellt? (Also z.B. ein USB-Mikro, aber 
das sollte mit Alsa ja egal sein, was für ein Mikro, oder?)

Alsa ist aber schon installiert, Sound funktioniert. Ich werde erstmal 
alles auf dem PC machen, erst wenn ich das im Griff habe, wende ich mich 
der Dockstar zu.


@ Klaus Wachtler
hast Du das mal ausprobiert? Ich hatte das ja auch probiert, und bei mir 
erscheint:

E: Paket eclipse hat keinen Installationskandidaten

Bei Dir nicht?


@docean
danke, mit den Kernel-Dateien werde ich weiter testen. Aptitude war mir 
einfach noch nicth über den Weg gelaufen.. :-)

von Rainer U. (r-u)


Lesenswert?

und natürlich auch danke an Wayne!

von Rainer U. (r-u)


Lesenswert?

So, wieder ein bischen weiter. VMWare-Tools funktionieren jetzt, inkl. 
Bildschirmgrößenanpassung etc.

Eclipse habe ich nochmal entpackt, diesmal in mein Home-Verzeichnis. 
Jetzt meckert der make nicht mehr, dafür findet er die stdio.h nicht.. 
:-)

von Klaus W. (mfgkw)


Lesenswert?

Rainer Unsinn schrieb:
> @ Klaus Wachtler
> hast Du das mal ausprobiert? Ich hatte das ja auch probiert, und bei mir
> erscheint:

nee, habe ich nicht.
Dann ist wohl eclipse der falsche Name.
Meine Anmerkung bezog sich nur auf das (-)install.

Und es mag gut sein, daß man es am besten nicht mit apt-get installiert, 
k.A..
Ich verwende keine überkommenen IDEs, sondern nur den modernen EMACS
zusammen mit topaktuellem make.

von Klaus W. (mfgkw)


Lesenswert?

docean schrieb:
> apt-get search kernel-header

eventuell: apt-cache search ...

von (prx) A. K. (prx)


Lesenswert?

Rainer Unsinn schrieb:

> Die VMWare-tools wollen auch noch konfiguriert werden, ich soll dazu das
> script vmware-config-tools.pl aufrufen. Dieses will dann erstmal einen
> anderen Compiler (gcc 4.1.3 will es, gcc 4.3.2 hab ich)

Der will den Compiler mit dem der Kernel kompiliert wurde, und der 
könnte beispielsweise als /usr/bin/gcc-4.1 rumliegen. Dann
  export CC=/usr/bin/gcc-4.1
vor dem Aufruf der Tools-Inst definieren.

> ignorieren, aber dann will es wissen, wo die C header dateien für meinen
> aktuellen kernel liegen - bei der Frage muß ich passen. sie liegen

Wem apt-get etwas zu lowlevel ist, der kann sich auch mit dem ggf. 
interaktiv nutzbaren aptitude vergnügen. Darin sind die linux-headers 
unter "Virtual Packages" zu finden.

von Rainer U. (r-u)


Lesenswert?

@A.K.
Ja, das hatte ich herausgefunden, VMware tools sind jetzt ok.

Aber inzwischen zweifel ich wirklich, ob ich bei Eclipse alles richtig 
gemacht habe (jetzt schon das 2. Mal):

1) Paket (s.o.) herunterladen, also von 
http://packages.debian.org/sid/eclipse-cdt

2) Entpacken, den entpacken Ordner in mein Verzeichnis /home/rainer 
verschieben

3) unter /home/rainer/eclipse auf das Eclipse-Symbol klicken

Zuerst sagt, er, dass er CJT oder so als Java-Maschine hat. Dabei habe 
ich die JRE6 schon installiert, und bei der letzten Installation hat er 
sie auch erkannt - heute wieder nicht?

Dann erstelle ich ein neues C-Projekt (nicht C++) - er findet die 
stdio.h nicht..

muß ich erst noch irgendein Installationsscript laufen lassen? Wenn ja - 
wo liegt das? Ist das normal, daß er die include-dateien nicht findet? 
ich meine, daß der gcc da ist, wird ja auch stillschweigend 
vorausgesetzt, warum nimmt er dann nicht den Standard-Pfad für die 
Standard-Include-Dateien?

von D. I. (Gast)


Lesenswert?

sind denn die headers installiert?

von Rainer U. (r-u)


Lesenswert?

müssen sie ja wohl - mit gcc (aus der shell) kann ich ja kompilieren..

von Zwie B. (zwieblum)


Lesenswert?

Nimm lieber einen Projekt-fähigen Texteditor (geany, kate ...) und 
Makefiles. Oder nimm anjuta.

von Rainer U. (r-u)


Lesenswert?

nee, diesmal nicht das dünne Brett bohren.. ich versuch es weiter! :-)

von Rainer U. (r-u)


Lesenswert?

Jetzt geht es.. es lag doch tatsächlich am nicht korrekt installierten 
Java-Runtime-Environment (JRE6)..

Endlich kann ich mich auf das Programmieren konzentrieren! :-)

von Rainer U. (r-u)


Lesenswert?

Mal wieder ein bischen Zeit gehabt und jetzt eine Frage zum Installieren 
/ Pakete: Mir ist nicht ganz klar, wie ich Dateien bekomme, die auf 
meinem System fehlen:

Beispiel 1: hier auf der Seite ist ein Beispiel, welches die Datei 
asoundlib.h benötigt. Die ist bei mir nicht installiert (jedenfalls sagt 
das der "find"). Sound funktioniert aber.

http://www.linuxjournal.com/article/6735?page=0,1

Wie bekomme ich jetzt heraus, welches Paket ich installieren muß? Alsa 
ist ja wohl installiert.. sonst hätte ich ja keinen Sound - es muß also 
ein extra Paket mit dem Quelltext geben - aber wie sucht man sowas?

Oder anderes Beispiel:

auf der Seite von Jack gibt es einen Downloadbereich, der sagt, man 
solle die Paketverwaltung auf seinem PC benutzen:

http://jackaudio.org/download

Ich sehe da Jack1 und Jack2, aber wenn ich die Paketverwaltung starte 
(synaptic), und bei der Suche "Jack" eingebe, dann erhalte ich unter 
"jack" einen CD-Ripper. Jetzt kann ich raten ob es vielleciht "jackd" 
ist (wird auch angezeigt) - aber wie finde ich diesen Zusammenhang?


Und generell für die Include-dateien, wenn die so angegeben sind wie im 
Beispiel, wo müssen sie dann sitzen, um gefunden zu werden?

#include <alsa/asoundlib.h>

Also wie lautet der vollständige Pfad vor dem "alsa/..." und woher weiß 
der Compiler diesen Pfad?

Ich hoffe Ihr konntet mir folgen.. :-)

von D. I. (Gast)


Lesenswert?

du musst die pakete installieren die auf -dev enden, das sind die 
development pakete die dann auch die .h Dateien enthalten

von Klaus W. (mfgkw)


Lesenswert?

http://www.debian.org/distrib/packages

Wenn man da nach asound sucht, kommt u.a. der Name libasound2-dev raus.
Der könnte es sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.