13.12.2017, 15:51 UTC+1

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

1

05.07.2012, 16:49

C unter Linux?

Hallo,

ich möchte mir ein Programm schreiben, was Dateien erzeugen kann, die dann vom Linux verwendet werden sollen.
Z.B. eine Konfigurationsdatei erstellen.

Da ich nur C als Programmiersprache kann, wollte ich Fragen: kann Knoppix C "verstehen".
Wenn ja, was ist anders als bei der Programmierung mit Windows?
Welchen Compiler würdet ihr mir empfehlen?
Ich habe auch von SHELL/BASH Programmierung gelesen - ist das "besser" für Linux als C?
Gruß
dietzelmann

klaus2008

Meister

Beiträge: 2 656

Geschlecht: Männlich

2

05.07.2012, 19:28

Allgemeine Fragen dieser Art lassen sich nur schwer in wenigen Sätzen beantworten.

Wenn man Linux "intensiv" benutzt, kann es nie schaden, die Programmierung der Shell zu beherrschen. Viele Aufgaben der Systemadministration lassen sich damit leicht lösen. Programme für die Shell (Shellskripte) lassen sich einfach im Texteditor anpassen, benötigen keinen speziellen Kompilier-Link-Vorgang und werden interpretiert. Man kann mit Shellskripten neue Shellskripte erzeugen und die dann sofort ausführen (Ausführungsrechte natürlich vorausgesetzt). Weil Shellskripte interpretiert werden, ist ihre Ausführungsgeschwindigkeit meistens langsamer als bei Maschinenprogrammmen. Vielfach werden Shellskripte dafür eingesetzt, bereits vorhandene Maschinenprogramme zu steuern und in Abhängigkeit von den jeweiligen Rückgabewerten Aktionen zu veranlassen.

Verwendet man eine Hochsprache wie zum Beispiel die Programmiersprache "C", deren Eingabedatei vor der eigentlichen Ausführung in ein Maschinenprogramm umgewandelt werden, kann man im Normalfall eine bessere Ausführungsgeschwindigkeit erwarten (Kompilersprache <-> Interpretersystem).

Meistens hat man eine Aufgabenstellung und eine (ungefähre) Anleitung zur Lösung. Die Wahl einer speziellen Programmiersprache hängt manchmal von der persönlichen Neigung des Entwicklers ab und manchmal aber auch davon, ob bereits bestehende Programmbibliotheken für das neue Programm wiederverwendet werden sollen. Es würde bestimmt schwer fallen, eine in der Sprache Java geschriebene und kompilierte Bibliothek direkt von einem Programm in der Programmiersprache C anzusteuern. Man könnte aber ein kleines Hilfsprogramm in Java schreiben, welches vom C-Programm mit einem Aufruf der "system"-Funktion gestartet wird. Dann müsste man sich immer noch Gedanken machen, wie Daten zwischen den beiden grundlegend veschiedenen Systemen ausgetauscht werden sollen. Java seinerseits bietet eine Möglichkeit, plattformspezifischen Objektcode zu verwenden.

Zu der grundsätzlichen Überlegung, ob bereits bestehende Bibliotheken verwendet werden sollen, gehört auch die Frage nach der Interaktion mit einem Benutzer. Sofern eine Benutzerschnittstelle benötigt wird, erwartet der durchschnittliche Anwender bei einem Windows-Programm eine Lösung mit "Fenstern". Das Windows-API bietet auch einfache Möglichkeiten, Nachrichtenfenster zu erzeugen. Unter Linux ist die Programmierung von Fenstern, sofern es die Programmiersprache C betrifft, immer mit einem gewissen Aufwand verbunden. Das liegt wohl daran, dass es bei Linux eine gewisse Trennung von System und grafischer Umgebung gibt. Eigentlich ist auch die grafische Umgebung (Xserver) unter Linux nur ein Benutzerprogramm. Linux ist schon immer als Mehrbenutzersystem einsetzbar gewesen. Man kann auf einem Linux-Rechner verschiedene Xserver starten, die auf unterschiedlichste Weise mit den Benutzern interagieren. Während beipielsweise ein Benutzer direkt am Rechner (Konsole) sitzt, kann ein anderer per Fernzugriff ebenfalls eine grafische Umgebung bereitgestellt bekommen (siehe zum Beipiel den Thread bezüglich VNC in diesem Forum). Aber auch von einem Shellskript heraus kann man Fenster auf dem Desktop erzeugen, wenn man über die entsprechenden Hilfsprogramme verfügt.

Es stellt sich außerdem noch die Frage nach dem Komfort bei der Programmentwicklung. Man kann ein C-Programm unter Linux in einem beliebigen Texteditor schreiben, notfalls auch mit ed. Danach ruft man normalerweise den GNU C-Compiler GCC auf. Der GCC steuert den Kompilier- und Link-Vorgang. Als Ergebnis erhält man ohne spezielle Vorgabe eine ausführbare Datei "a.out". Bei größeren Projekten ersteltl man mehrere separate Eingabedateien und schreibt sich eine Steuerdatei für das Programm make ("Makefile"). Bis vor einigen Jahren war es in der Linux-Welt gebräuchlich, den Emacs als Entwicklungsumgebung zu verwenden. Der benötigt nämlich nur ein einfaches Terminal und keine grafische Benutzerschnittstelle. Es gibt für Linux aber auch intergrierte Entwicklungsumgebungen wie Eclipse. Da benötigt man aber meistens Zusatzpakete, weil Eclipse wohl eigentlich für die Entwicklung von JAVA-Programmen erfunden wurde. Unter Windows verwendet man üblicherweise eine IDE, die einem die Verwendung von verschiedenen Eingabedateien erleichtert (Open Watcom, Visual Studio Express ...), so dass man kaum jemals direkt ein Makefile oder eine entsprechende Projektdatei wird bearbeiten müssen.

Langer Rede kurzer Sinn: Auch wenn man sich bereits mit der Progammierung mit der Programmiersprache C auskennt, sollte man sich trotzdem bemühen, die Programmierung der Shell (Bash) zu erlernen, damit man sich das Leben unter Linux nicht unnötig kompliziert macht. Der C-Compiler ist bei Knoppix der gcc und das Steuerprogramm make muss man bei CD-Versionen von Knoppix als Paket "make" nachinstallieren.

Ein Literaturhinweis wäre zum Beipiel die Seite Galileo Computing - <openbook>. Dort findet man Onlineversionen von Büchern, die einem den Einstieg in die Linux-Welt erleichtern sollten.

Fragen, Kommentare, Ergänzungen sind natürlich jederzeit erwünscht. :)

Gruss
Klaus

progi

Fortgeschrittener

3

06.07.2012, 12:31

hi,

zu bash gibt es (u.a.)

wenn man den Desktop vor sich hat : F1 -> Unix Hilfeseiten -> Abschnitt 1   Benutzer-Befehle -> bash

oder :
auf Kommandozeilenebene Linux : man bash (man kommt mit q wieder raus) - ein sehr wertvoller aber austerner
Text (ich finde, zum Nachschlagen, aber nicht zum Lernen geeignet)

oder : http://bash.webofcrafts.net/abs-guide-latest.tar.bz2

Ein kleines Beispiel für C unter Linux findet sich unter :


ein kleines Programm, um die Ausgabe von du (ein Systemprogram auf der Kommandozeile -
siehe : man du)
zu formatieren


Entwicklungsumgebung : http://packages.debian.org/de/squeeze/xwpe
Ich habe schon (vor Jahren) xwpe verwendet und war damit sehr zufrieden - aber wer weiß, jetzt ist es vielleicht veraltet

oder (ich nenne den "Knopf" auf der Taskbar ganz links unten "Kmenu" :
Kmenu ->Entwicklung -> Squeak
Vorsicht, ich habe Squeak noch nie angewendet (ich führe es nur als Beispiel an) und ich funktioniere hier gerade unter :
KNOPPIX_V6.7.0DVD-2011-08-01-DE.iso


Vielleicht willst Du xwpe noch installieren. Ich vermute, dies geht in der Kommandozeile mit :
sudo aptitude update
sudo apt-get install xwpe
- habe ich aber jetzt nicht probiert -
oder verwende Kmenu -> Einstellungen -> Synaptic Paketverwaltung


Soweit ich Deine Problemstellung verstehe, dürfte Dir die Kommandozeile (oder xwpe) genügen

Gruß
progi

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »progi« (06.07.2012, 15:10)


4

06.07.2012, 19:09

Hallo,

ich hab mir dieses Buch bestellt:

http://www.amazon.de/Linux-umfassende-Ha…1594543&sr=8-16


Vielen Dank für eure Antworten!
Gruß
dietzelmann

Linux HardwareLinux Computer & PCs | Linux Notebooks & Laptops | Geek Shirts | Geek und Nerd Shirt Shop