מטרת מדריך זה להשלים את הפער בין החומר התאורטי הנלמד בכתה או מספר לימוד, לבין העבודה המעשית על המערכת.
המדריך מיועד לתלמידים המתחילים את הלימוד התאורטי של שפת C, וזקוקים להדרכה כיצד לכתוב ולהדר את התכניות הראשונות שלהם במערכת GNU/Linux.
המדריך נבנה על מערכת Ubuntu GNU/Linux אך כל מערכת לינוקס תתאים. הוראות ההתקנה המדוייקות ספציפיות למערכת מבוססת Debian GNU/Linux, אך ינתנו הסברים כלליים גם עבור מערכות אחרות.
עברו על המדריך לכתיבת תכנית בשפת C ובשימוש במהדר gcc ובדקו שאתם שולטים בכתיבה, הידור והרצה של תכניות C פשוטות:
כמו שראינו במדריך לשימוש ב gcc, הידור בעדרת פקודות ישירות ל gcc עלול להיות משעמם כאשר מדובר בפרויקט גדול המכיל קבצים רבים. לשם כך נבנו מספר מערכות שבאות למכן את התהליך, מדריך זה ידגים שימוש ב make לצורך מיכון התהליך.
כאשר מריצים את הפקודה make בשורת הפקודה, היא מחפשת קובץ בשם Makefile. קובץ ה Makefile מכיל תסריט המגדיר לתכנת make כיצד יש להדר את הפרויקט שלנו.
מדריך זה יסביר רק שימוש פשוט ב make כדאי לקרוא על שימושים מתקדמים יותר בתכנה באתר gnu מדריך שימוש ב gnu make
CC = gcc
שורה זו הגדירה את המשתנה CC להיות המחרוזת gcc. מאוחר יותר נוכל להשתמש במשתנה זה ע”י קריאה ל (CC)$
ישנם מספר משתנים המוגדרים מראש ללא שיהיה צורת להגדירם באופן מפורש בקובץ ה Makefile החשובים הם:
הגדרת מטרה לדוגמה:
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
/*code*/ /* file name: writeln.h */ #ifndef __WRITELN_H__ #define __WRITELN_H__ void writeln (const char * string); #endif /* __WRITELN_H__ */ /*code*/
/*code*/ /* file name: writeln.c */ #include <stdio.h> #include "writeln.h" void writeln (const char * string) { printf ("%s\n", string); } /*code*/
/*code*/ /* file name: main.c */ #include "writeln.h" int main (int argc, char * argv []) { writeln ("Hello world"); return 0; } /*code*/
#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
#code #file: Makefile all: main main: main.o writeln.o .c.o: $(CC) $(CFLAGS) -c $< -o $@ #code
קוד:
main/.
כך צריכה להראות התכנית בעורך הטקסט ובמסוף בו אתם מבצעים את ההידור וההרצה.
Makefile - ללא שימוש בקצורים:
(לחץ על התמונה כדי לקבל תמונה מוגדלת)
Makefile - שימוש בקיצורים:
(לחץ על התמונה כדי לקבל תמונה מוגדלת)
בהמשך העבודה בודאי תרצו להתקין כלי פיתוח נוספים וספריות פיתוח חדשות. אפשר למצוא מדריכים לשימוש בכלים אלו ברשת ופה באתר.
מדריכי תכנות - אוסף מדריכי התכנות בפנגווין.