Fehlermeldung GCC Compiler bei GTK Projekt

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Hlech65730
Beiträge: 1
Registriert: 07.08.2020 20:41:58

Fehlermeldung GCC Compiler bei GTK Projekt

Beitrag von Hlech65730 » 08.08.2020 13:32:51

Hallo @ all,
ich habe auf einem Raspberry Pi mit Raspbian Stretch ( 9 ) mit installiertem Code::Blocks und der libgtk-3-dev ein GTK Projekt angelegt.
Der Code sieht so aus :

Code: Alles auswählen

#include <stdlib.h>
#include <gtk/gtk.h>

static void helloWorld (GtkWidget *wid, GtkWidget *win)
{
  GtkWidget *dialog = NULL;

  dialog = gtk_message_dialog_new (GTK_WINDOW (win), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "Hello World!");
  gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
  gtk_dialog_run (GTK_DIALOG (dialog));
  gtk_widget_destroy (dialog);
}

int main (int argc, char *argv[])
{
  GtkWidget *button = NULL;
  GtkWidget *win = NULL;
  GtkWidget *vbox = NULL;

  /* Initialize GTK+ */
  g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
  gtk_init (&argc, &argv);
  g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);

  /* Create the main window */
  win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_container_set_border_width (GTK_CONTAINER (win), 8);
  gtk_window_set_title (GTK_WINDOW (win), "Hello World");
  gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);
  gtk_widget_realize (win);
  g_signal_connect (win, "destroy", gtk_main_quit, NULL);

  /* Create a vertical box with buttons */
  vbox = gtk_vbox_new (TRUE, 6);
  gtk_container_add (GTK_CONTAINER (win), vbox);

  button = gtk_button_new_from_stock (GTK_STOCK_DIALOG_INFO);
  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (helloWorld), (gpointer) win);
  gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);

  button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
  g_signal_connect (button, "clicked", gtk_main_quit, NULL);
  gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);

  /* Enter the main loop */
  gtk_widget_show_all (win);
  gtk_main ();
  return 0;
}
dafür habe ich im Codeblocks die lokalen Linker Optionen gesetzt :
`pkg-config gtk+-3.0 --libs` -export-dynamic
und auch die lokale Compiler Option :
`pkg-config gtk+-3.0 --cflags`

es kommt aber die Fehlermeldung :

-------------- Build: Debug in GTK (compiler: GNU GCC Compiler)---------------

gcc -Wall -g '/usr/bin/pkg-config gtk+-3.0 --cflags’
-pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0
-I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0
-I/usr/lib/arm-linux-gnueabihf/dbus-1.0/include
-I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/
-I/usr/include/cairo -I/usr/include/pango-1.0
-I/usr/include/harfbuzz -I/usr/include/pango-1.0
-I/usr/include/atk-1.0 -I/usr/include/cairo
-I/usr/include/pixman-1 -I/usr/include/freetype2
-I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0
-I/usr/include/libpng16 -I/usr/include/glib-2.0
-I/usr/lib/arm-linux-gnueabihf/glib-2.0/include
-c /home/pi/Desktop/C-Programming/Hlech65730/GTK/main.c
-o obj/Debug/main.o
/usr/lib/gcc/arm-linux-gnueabihf/6/../../../arm-linux-gnueabihf/crt1.o: In function `_start':
(.text+0x34): undefined reference to `main'
collect2: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 2 second(s))
2 error(s), 0 warning(s) (0 minute(s), 2 second(s))

Kann mir da jemand Tipps geben, wie ich da weiterkomme ? Danke ! Gruss, Hlech65730

Benutzeravatar
Livingston
Beiträge: 1813
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: Fehlermeldung GCC Compiler bei GTK Projekt

Beitrag von Livingston » 08.08.2020 17:05:55

Ich nehme mal an, dass /home/pi/Desktop/C-Programming/Hlech65730/GTK/main.c das oben angegebene Programm ist. Da dort die Funktion main drinsteht, willst Du vermutlich kein Modul (.o) bauen, sondern ein lauffähiges Programm.
Dann als erstes mal das "-c" weg, sonst versucht gcc nur ein Modul zu bauen. Außerdem ist hinter der Option "-o" der entgültige Name anzugeben, und der sollte nicht auf ".o" enden, sonst wäre es eben wieder nur eine Vorstufe zu einem fertigen Programm.
Nach Deiner Benennung wäre das vermutlich "-o obj/Debug/main". Übrigens ist die Benennung äußerst verwirrend, denn main ist einerseits ein Funktionsname, andereseits der Name Deiner C-Hauptdatei und schließlich sogar des fertigen Binaries. Ich würde das umbenennen.

Sehr beliebt ist übrigens "test", aber wenn Du davon irgendwann mal 10 verschiedene in 20 unterschiedlichen Projekten rumliegen hast, wirst Du Dir das schnell wieder abgewöhnen. :wink:

Antworten