ubuntuusers.de

Ubuntu und C Programmieren (GUI?)

Status: Ungelöst | Ubuntu-Version: Ubuntu 10.10 (Maverick Meerkat)
Antworten |

Helvete

Anmeldungsdatum:
1. Januar 2011

Beiträge: 1

Hallo,

habe mir vor 2 tagen Ubuntu installiert. (finde es super ☺ ) Da ich unter Windows mit der Win32 Api schon gearbeitet habe, wollte ich fragen ob es auch eine Schnittstelle für Ubuntu gibt?

Die Foren suche habe ich schon benutzt und habe keine direkte Antwort auf meine Frage bekommen. Von eine Kumpel habe ich schonmal gehört das es unter Ubunut einfacher sein soll mit C eine GUI zu machen.

Mit Freundlichen Grüßen Helvete

Yoschi

Anmeldungsdatum:
11. April 2009

Beiträge: 454

Hallo Helvete und willkommen im Forum !

Unter Ubuntu wirst du mit C warscheinlich GTK+ verwenden wollen. GTK ist das Toolkit, auf dem unter anderem Gnome und somit fast dein gesamter Desktop basiert.

Gtk ist insofern "einfacher", dass man ganz normales C schreiben muss und sich nicht mit windowsspezifischen Sachen wie die WinMain Funktion rumschlagen muss.

Das "Hello, World" Programm sieht dann so aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <gtk/gtk.h> /* GTK einbinden */

int main( int argc, char *argv[]) /* Normale main Funktion */
{
  GtkWidget *window, *label; /* Das Fensterobjekt - Ja, GTK ist objektorientiert */

  gtk_init(&argc, &argv); /* gtk system starten */

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL); /* Toplevel Window erstellen */
  label = gtk_label_new("Hallo, Welt"); /* Das Static Widget fuer Text in GTK */

  /* Gtk arbeitet ausschliesslich mit Sizern anstatt pixelgenauer Positionierung.
     Ein GtkWindow ist ein Container, der genau ein Kind haben kann (GtkBin).
     Der kann aber wieder ein Container wie GtkVBox, GtkTable, etc sein. */
  gtk_container_add(GTK_CONTAINER(window), label); 

  gtk_widget_show_all(window); /* Das Fenster und alle Kindobjekte anzeigen */


  gtk_main(); /* Den Event Loop starten */

  return 0;
}

Hier gibt es ein englisches Tutorial dazu.

Yoschi

deadtronic

Anmeldungsdatum:
18. Februar 2010

Beiträge: 762

Es gibt sogar eine Menge, wobei GTK+ (Gnome) und Qt (KDE) die gebräuchlichsten sind. Schau doch mal unter GUI-Toolkits.

Anmerkung: Qt ist mit C anscheinend weniger gut möglich. Da du ja Gnome verwendest, bietet sich wohl Gtk an, dieses lässt sich nativ in C einbinden.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi Helvete,

erstmal willkommen hier auf dem Forum !

Das Interface zu Linux besteht aus C-Funktionen, und die stehen (wie alle Basics) in den man- pages. (→ http://wiki.ubuntuusers.de/man )
Konkret stehen die Interfaces dort in Sektion 2 ("System Calls" → http://linux.die.net/man/2/ ) und in Sektion 3 ("Library Functions" → http://linux.die.net/man/3/ ).

Für die graphische Programmierung arbeitet man allerdings praktischweise mit einem graphischen Toolkit: http://wiki.ubuntuusers.de/GUI-Toolkits
(dazu findest Du über die Suchfunktion Mengen von Diskussionen hier auf dem Forum. Das wäre ein guter Ansatz zur Orientierung)

LG,

track

edit: oha, da waren gleich 2 Leute schneller als ich ... 😉

jerik

Avatar von jerik

Anmeldungsdatum:
19. August 2006

Beiträge: 425

Helvete

Band oder Schwedisch?

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Man sollte aber auch noch Glade erwähnen, das afair auch Funktionen zum dynamischen Erzeugen von GUIs aus den erstellten GUI-Dateien bietet.

Zudem noch die Anmerkung, dass man heutzutage C für GUIs nicht mehr unbedingt einsetzen muss ☺ Da gibt es komfortablere Sprachen.

opentarek

Anmeldungsdatum:
1. Dezember 2010

Beiträge: 34

Mach eine GUI lieber mit Java .

opentarek

Anmeldungsdatum:
1. Dezember 2010

Beiträge: 34

Schreib dir lieber eine GUI mit Java oder C# .

Panke

Anmeldungsdatum:
14. Oktober 2010

Beiträge: 133

opentarek schrieb:

Schreib dir lieber eine GUI mit Java oder C# .

Wo genau siehst Du die Vorteile gegenüber der Lösung mit Qt/C++ (oder Qt/<language> oder eben Gtkmm/C++)? Was genau bietet Java / C# was das native Aussehen und bessere Integration der letzgenannten aufwiegt?

Meine Erfahrung zumindest mit Swing ist, dass es jedenfalls nicht mehr Spaß macht als Qt. Eher im Gegenteil, das Signal/Slot-Konzept habe ich konstant vermisst.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Panke schrieb:

Meine Erfahrung zumindest mit Swing ist, dass es jedenfalls nicht mehr Spaß macht als Qt. Eher im Gegenteil, das Signal/Slot-Konzept habe ich konstant vermisst.

Man kann dank QtJambi auch Qt mit Java verwenden. Das war das erste Mal, dass sich das Entwickeln einer GUI unter Java gut angefühlt hat!

Ansonsten ist so ein Kommentar von opentarek natürlich eher ausdrucksschwach. Man kann leicht zig Beispiele für Sprachen geben, die sich im Zusammenhang mit GUI-Programmierung besser eignen als C. Darum ging es hier ja nicht; ich wollte dem OP lediglich darauf hinweisen, dass C dafür nicht die optimale Wahl ist. Letztlich kann er dafür einen speziellen Grund haben, den wir nicht kennen, oder eben er wußte es nicht besser.

garth11

Anmeldungsdatum:
8. Januar 2011

Beiträge: 2

Hallo zusammen,

ich bin auch erst vor einer Woche auf Ubuntu umgestiegen und es gefällt mir sehr gut. Ich habe nun auch eine Frage zu GTK+, die sicher schnell beantwortet werden kann:

Wir programmieren in der Uni C und ich wollte mich auch einmal mit einem grafischen Toolkit auseinandersetzen. Da bin ich auf GTK+ gestoßen. Ich frage mich nun jedoch, ob das nicht schon vorinstalliert ist, oder ob ich da noch etwas einrichten muss. Synaptic sagt mir, libgtk2.0-0 sei installiert. An anderer Stelle habe ich gelesen, wenn man gtk-demo ausführen würde, wäre dass ein Zeichen für eine funktionierende Installation. Jetzt habe ich mir ein einfaches Programm geschrieben, dass ein Fenster öffnet, jedoch bekomme ich folgenden Fehler:

1
2
3
4
gcc -o fenster fenster.c 'pkg-config --libs --cflags gtk+-2.0'
gcc: pkg-config --libs --cflags gtk+-2.0: Datei oder Verzeichnis nicht gefunden
fenster.c:1: fatal error: gtk/gtk.h: Datei oder Verzeichnis nicht gefunden
compilation terminated.

Ich finde nicht mal die Header-Datei gtk.h wenn ich das Dateisystem durchsuche.

Kann mir da jemand weiterhelfen??

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi garth11,

erstmal willkommen auf dem Forum !

Schau mal im hiesigen Wiki: http://wiki.ubuntuusers.de/Baustelle/Wiki/GTK (später: http://wiki.ubuntuusers.de/Wiki/GTK )
Dir fehlen also noch die Header (sprich: *-dev - Paket) ...

fenster.c:1: fatal error: gtk/gtk.h: Datei oder Verzeichnis nicht gefunden

LG,

track

garth11

Anmeldungsdatum:
8. Januar 2011

Beiträge: 2

Ah super, danke für die schnelle Antwort.

Ich habe das Developer-Paket noch installiert, es muss aber auch an dem von mir eingegebenen Befehl liegen. Es läuft jedoch mit dem im Wiki unten erwähnten Befehl.

1
gcc -Wall -g fenster.c -o fenster `pkg-config --cflags --libs gtk+-2.0` 

besten Dank!

vinho

Anmeldungsdatum:
10. September 2010

Beiträge: 91

garth11 schrieb:

Ah super, danke für die schnelle Antwort.

Ich habe das Developer-Paket noch installiert, es muss aber auch an dem von mir eingegebenen Befehl liegen. Es läuft jedoch mit dem im Wiki unten erwähnten Befehl.

1
gcc -Wall -g fenster.c -o fenster `pkg-config --cflags --libs gtk+-2.0` 

besten Dank!

In deinem vorherigen Befehl hattest du einfache Hochkommata verwendet, es müssen aber Backticks sein, wie hier.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Oder gleich richtig "$( ... )":

gcc -Wall -g fenster.c -o fenster  $(pkg-config --cflags --libs gtk+-2.0) 

- die "Backticks" (``) gelten nicht ohne Grund als veraltet ...

LG,

track

Antworten |