שימוש בסיסי ב pkg-config

מטרת המדריך

מטרת מדריך זה להשלים את הפער בין החומר התאורטי הנלמד בכתה או מספר לימוד, לבין העבודה המעשית על המערכת.

למי מיועד המדריך

המדריך מיועד לתלמידים המתחילים את הלימוד התאורטי של שפת C, וזקוקים להדרכה כיצד לכתוב ולהדר את התכניות הראשונות שלהם במערכת GNU/Linux.

על איזו מערכת נבנה המדריך

המדריך נבנה על מערכת Ubuntu GNU/Linux אך כל מערכת לינוקס תתאים. הוראות ההתקנה המדוייקות ספציפיות למערכת מבוססת Debian GNU/Linux, אך ינתנו הסברים כלליים גם עבור מערכות אחרות.

לפני תחילת העבודה

עברו על המדריך לכתיבת תכנית בשפת C ובשימוש במהדר gcc ובדקו שאתם שולטים בכתיבה, הידור והרצה של תכניות C פשוטות:

לצורך העבודה עם המדריך כדאי להתקין גם את חבילות הפיתוח של gnome המתקינות את תכנת pkg-config וספריות נוספות.

הידור בעזרת gcc

כמו שראינו במדריך לשימוש ב gcc, הידור בעדרת פקודות ישירות ל gcc עלול להיות מורכב כאשר לתכנית שלנו יש תלויות רבות. לשם כך נבנו מספר מערכות שבאות למכן את התהליך, מדריך זה ידגים שימוש ב pkg-config לצורך הכנת דגלים מתאימים למהדר gcc לפי התלויות שנגדיר מראש.

pkg-config

כאשר מריצים את הפקודה pkg-config בשורת הפקודה, היא מחפשת אלו דגלים צריך לתת למהדר gcc כדי להדר תוך שימוש בספריות שהגדרנו.

הפעלת התכנה

pkg-config מקבל את שם הספריה או הספריות להן אנו זקוקים במהלך הידור התכנית שלנו ורשימה של אפשרויות. האפשרויות אומרות ל pkg-config אזה סט של דגלים אנו רוצים.

האפשרות help תדפיס עבורנו רשימה של אפשרויות:

  pkg-config --help

צורת שימוש רגילה:

  pkg-config [options] library-name
  • options - האפשרויות
  • library-name - שם או שמות הספריות להן אנו זקוקים בהידור התכנית שלנו.

אפשרויות חשובות:

  • cflags - כל הדגלים הדרושים לצורך הידור.
  • ldflags - כל הדגלים הדרושים לצורך קישור.

שימוש ב help יגלה עוד דגלים.

מהלך העבודה

אנו נכתוב תכנית שזקוקה לספריות gtk+-2.0 כדי להתהדר כראוי, לצורך כך נשתמש ב pkg-config ונבקש ממנו את כל הדגלים הדרושים גם להידור וגם לקישור:

  pkg-config --libs --cflags gtk+-2.0
כתיבת התכנית

את התכנית ניתן לכתוב בכל עורך טקסט. אנו נשתמש בדוגמה זו בעורך הטקסט של Gnome.

כתוב תכנית פשוטה בעורך הטקסט,

קוד:

/*code*/

#include <gtk/gtk.h>

static gboolean on_delete_event( GtkWidget *widget,
                              GdkEvent *event,
                              gpointer data )
{
    gtk_main_quit ();
    
    return FALSE;
}

static void on_button_clicked (GtkWidget *widget,
                               gpointer data)
{
    g_print ("Hello World\n");
}

int
main (int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *button;
    
    gtk_init (&argc, &argv);
    
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    g_signal_connect (G_OBJECT (window), "delete_event",
		      G_CALLBACK (on_delete_event), NULL);
    
    button = gtk_button_new_with_label ("Press Me"); 
    g_signal_connect (G_OBJECT (button), "clicked",
		      G_CALLBACK (on_button_clicked), NULL);
    
    gtk_container_add (GTK_CONTAINER (window), button);
    
    gtk_widget_show (button);
    gtk_widget_show (window);
    
    gtk_main ();
    
    return 0;
}

/* code */
הידור התכנית

אנו נהדר את התכנית בעזרת מהדר gcc, מתוך המסוף (ראה תמונת מסך בסוף המדריך) ונשתמש בתכנת העזר pkg-config כדי להורות ל gcc להשתמש בספריות של gtk

  gcc `pkg-config --libs --cflags gtk+-2.0` helloworld.c -o helloworld
הרצת התכנית

קוד:

  helloworld/.
תמונת מסך

כך צריכה להראות התכנית בעורך הטקסט ובמסוף בו אתם מבצעים את ההידור וההרצה.

gtk1.jpg

(לחץ על התמונה כדי לקבל תמונה מוגדלת)

איך להמשיך

בהמשך העבודה בודאי תרצו להתקין כלי פיתוח נוספים וספריות פיתוח חדשות. אפשר למצוא מדריכים לשימוש בכלים אלו ברשת ופה באתר.

מדריכי תכנות

מדריכי תכנות - אוסף מדריכי התכנות בפנגווין.

מדריכים/שימוש_בסיסי_ב_pkg-config.txt · שונה לאחרונה ב: 2008/06/19 18:34 (עריכה חיצונית)
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0