שימוש בסיסי ב make
מתוך דביאן לינוקס
תוכן עניינים |
רקע
מטרת המדריך
מטרת מדריך זה להשלים את הפער בין החומר התאורטי הנלמד בכתה או מספר לימוד, לבין העבודה המעשית על המערכת.
למי מיועד המדריך
המדריך מיועד לתלמידים המתחילים את הלימוד התאורטי של שפת C, וזקוקים להדרכה כיצד לכתוב ולהדר את התכניות הראשונות שלהם במערכת GNU/Linux.
על איזו מערכת נבנה המדריך
המדריך נבנה על מערכת אובונטו אך כל מערכת לינוקס תתאים.
לפני תחילת העבודה
עברו על המדריך לכתיבת תכנית בשפת C ובשימוש במהדר gcc ובדקו שאתם שולטים בכתיבה, הידור והרצה של תכניות C פשוטות:
הידור בעזרת gcc
כמו שראינו במדריך לשימוש ב gcc, הידור בעדרת פקודות ישירות ל gcc עלול להיות משעמם כאשר מדובר בפרויקט גדול המכיל קבצים רבים. לשם כך נבנו מספר מערכות שבאות למכן את התהליך, מדריך זה ידגים שימוש ב make לצורך מיכון התהליך. דרות בספריות המערכת, כמו לדוגמה malloc או printf
make
כאשר מריצים את הפקודה make בשורת הפקודה, היא מחפשת קובץ בשם Makefile. קובץ ה Makefile מכיל תסריט המגדיר לתכנת make כיצד יש להדר את הפרויקט שלנו.
קובץ Makefile פשוט יכיל שני חלקים
- חלק של הגדרת משתנים. המשתנים בד”כ יכילו מחרוזות טקסט שימשו בחלק השני של הקובץ.
- חלק של הגדרת יעדים, דרישות קדם ודרכי ביצוע:
1. הגדרת יעדים: בד”כ שמות של קבצי הפלט, קבצי אוביקט או קבצי הרצה
2. הגדרת דרישות קדם: בד”כ שמות קבצים הדרושים למהדר לצורך הכנת קבצי הפלט. לדוגמה קבצי קוד או קבצי אוביקט
3. הגדרת דרכי ביצוע: בד”כ פקודות להפעלת מהדר gcc
מדריך זה יסביר רק שימוש פשוט ב make כדאי לקרוא על שימושים מתקדמים יותר בתכנה באתר gnu מדריך שימוש ב gnu make
הגדרת משתנים
CC = gcc
שורה זו הגדירה את המשתנה CC להיות המחרוזת gcc. מאוחר יותר נוכל להשתמש במשתנה זה ע”י קריאה ל (CC)$
ישנם מספר משתנים המוגדרים מראש ללא שיהיה צורת להגדירם באופן מפורש בקובץ ה Makefile החשובים הם:
1. CC - מהדר ה C במערכת.
2. CFLAGS - הדגלים הרגילים המועברים למהדר לצורך הידור קבצים.
3. LDFLAGS - הדגלים הרגילים המועבדים למקשר לצורך קישור קבצים.
הגדרת מטרות
הגדרת מטרה לדוגמה:
main.o: main.c writeln.h $(CC) $(CFLAGS) main.c
בדוגמה זו היעד הוא הקובץ make.o , הדרישות להסגת היעד הם קיום הקבצים main.c ו writeln.h והדרך להשגת היעד היא הרצת מהדר ה C של המערכת עם הדגלים הרגילים על הקובץ main.c צריך לשים לב כי לפני הפקודה להפעלת מהדר ה C יש tab.
חשוב מאד אין רווחים לפני שם ה target, חייבים להכניס tab לפני מחרוזת הביצוע. אם לפני מחרוזת הביצוע יש רווחים ולא tab , תכנת ה make לא תבין את קובץ המ Makefile.
מהלך העבודה
כתיבת התכנית
את התכנית ניתן לכתוב בכל עורך טקסט. אנו נשתמש בדוגמה זו בעורך הטקסט של Gnome.
כתוב פרויקט פשוט הבנוי משני קבצי קוד וקובץ הגדרות אחד בעורך הטקסט, כמו כן נביא בהמשך שתי אפשרויות לכתיבת תסריט ה Makefile . הראשונה פשוטה להבנה, אך ארוכה ומסורבלת. השניה משתמשת בתכונות מתקדמות של תכנת make, קובץ ה Makefile קצר ונוח לשימוש אך קשה יותר להבנה. כדי להבין את השימוש בקיצורים ותכונות מתקדמות של make כדאי לקרוא מדריכים נוספים מדריך שימוש ב gnu make
- קובץ א. writeln.h קובץ הגדרות
/*code*/ /* file name: writeln.h */ #ifndef __WRITELN_H__ #define __WRITELN_H__ void writeln (const char * string); #endif /* __WRITELN_H__ */ /*code*/
- קובץ ב. writeln.c קובץ הקוד של פונקצית העזר בה נשתמש בפרויקט שלנו
/*code*/
/* file name: writeln.c */
#include <stdio.h>
#include "writeln.h"
void
writeln (const char * string)
{
printf ("%s\n", string);
}
/*code*/
- קובץ ג. main.c קובץ הקוד של הפונקציה הראשית בפרוייקט שלנו
/*code*/
/* file name: main.c */
#include "writeln.h"
int
main (int argc, char * argv [])
{
writeln ("Hello world");
return 0;
}
/*code*/
- קובץ ד.1 Makefile ללא קיצורים, הקובץ מובן ופשוט, אך ארוך ומסורבל.
#code #file: Makefile CC = gcc CFLAGS = -g -Wall -c LDFLAGS = -O2 all: hello hello: main.o writeln.o $(CC) $(LDFLAGS) main.o writeln.o -o hello main.o: main.c writeln.h $(CC) $(CFLAGS) main.c writeln.o: writeln.c writeln.h $(CC) $(CFLAGS) writeln.c clean: rm -f *.o hello .PHONY: clean #code
- קובץ ד.2 Makefile עם שימוש בקיצורים, הקובץ קצר ונוח לשימוש.
#code #file: Makefile all: main main: main.o writeln.o .c.o: $(CC) $(CFLAGS) -c $< -o $@ #code
הידור התכנית בעזרת make
אנו נהדר את התכנית בעזרת תכנת make, מתוך המסוף (ראה תמונת מסך בסוף המדריך)
הידור:
make
הרצת התכנית
תבנית:Ltr
תמונת מסך
כך צריכה להראות התכנית בעורך הטקסט ובמסוף בו אתם מבצעים את ההידור וההרצה.
Makefile - ללא שימוש בקצורים:
(לחץ על התמונה כדי לקבל תמונה מוגדלת)
Makefile - שימוש בקיצורים:
(לחץ על התמונה כדי לקבל תמונה מוגדלת)
איך להמשיך
בהמשך העבודה בודאי תרצו להתקין כלי פיתוח נוספים וספריות פיתוח חדשות. אפשר למצוא מדריכים לשימוש בכלים אלו ברשת ופה באתר.
נכתב באתר בהפינגווין (לא צויין שם כותב).
