הבדלים בין...

philips

New member
הבדלים בין...

נאמר לי היום כי ישנם הבדלים לא קטנים בין קמפול ועבודה על GCC תחת לינוקס לבין עבודה על GCC (או כל קומפיילר C,CPP אחר) תחת UNIX טהור. תהיתי אם מישהו מחברי הפורום המנוסה בתחומים אלו ,יוכל להעיר את עיני לגבי ההבדלים העיקריים אם בכלל... מידה ההפרעה שלהם ובאילו תחומים וכיצד ניתן למזער את ההבדלים כך שאוכל לעבוד על הלינוקס בבית עם חשש מינימלי לגבי התקמפלות הדברים על UNIX.. בתודה מראש...
 

voguemaster

New member
יש הבדלים לא קטנים

יש כל מיני הבדלים באימפלמנטציה של כל מיני system calls ויישום של כל מיני ספריות (כדוגמת הספריה הסטנדרטית). יש הבדלים בטיפול ב-signals ובהרבה מקרים הבדלים בכל מה שקשור ב-file descriptors (כולל SOCKETS כמובן). לכן קוד שאמור להתאים להרבה מערכות הפעלה דורש כמות לא קטנה של #ifdef ודומיו כדי לבדוק על איזה פלטפורמה אתה מקמפל דברים. בכל מקרה אם אלו תוכניות פשוטות, אין הרבה מה לדאוג. בתור מישהו שכתב שרת תחת לינוקס (עובד עם TCP) אני יכול להבטיח לך שההבדלים קיימים אבל לרוב לא קריטיים (לרוב, אבל לא תמיד). שווה לבדוק בספרים כמו Advanced programming in the unix environment המצוין, ובמקומות אחרים (כמו דפי ה-MAN של פונקציות וספריות שונות) וכן להיעזר כמובן בידידנו גוגל
 

philips

New member
תודה תודה...

אילו עוד טיפים תוכל לתת? בהנחה שלא מדובר באפליקציית TCPIP או במשהו מורכב אלא באפליקציות קטנות למדי... האם מנסיונך אולי עדיף בעצם לרדת מהרעיון ולעבוד על TELENT מול השרת UNIX ולקמפל במקום? ואגב פיתוח ב CPP/C ב LINUX.... יש כלים מומלצים? מה כדאי להתקין והיכן ניתן למצוא אותו?
 

voguemaster

New member
לאפליקציות קטנות

זה כמעט ולא משנה.. אני לא ממליץ לעבוד דרך טלנט אם יש לך אפשרות לעבוד עם סוג של יוניקס לוקאלית. בכל מקרה, רצוי לשים לב על כל פונקציה איזה סטנדרט היא מיישמת, או יותר נכון לאיזה סטנדרט היא מתאימה (POSIX, UNIX98, SYSV ו-BSD4.4 הם רק כמה מהתקנים הידועים). בקשר לכלים, עוד לא מצאתי את סביבת הפיתוח שלא מכריחה אותך לעבוד לפי template מסוים. לדוגמא, כמה ש-KDEVELOP נחמדה, היא מניחה שאתה בד"כ רוצה לכתוב אפליקצית QT. אני אישית מפתח עם סביבה נוחה מאוד וקלילה להפליא שנקראת XEMACS (חחח
). אני מקמפל בעזרת קובץ Make פשוט (כן, בשורת הפקודה). מדבג בעזרת gdb כשצריך (לרוב ע"י משפטי דיבוג או TRACE כי הקוד משתמש בכמה threads). יש כמה GUIים ל-GDB, אבל לא עם כולם מומלץ לעבוד כל הזמן. יש גם משהו שנקרא SOURCE NAVIGATOR שמגיע עם REDHAT, אבל לא ניסיתי אותו למען האמת...
 

linuxius

New member
בד"כ ההבדל שקוף אבל יכול להיות...

בד"כ ההבדל שקוף למשל בתיכנות TCP\IP לא אמור להיות הבדל. LINUX בכלל (וזה מצחיק שיותר מ-UNIXים) היא כמעט תומכת מלאה בתקן POSIX שהוא התקן הרשמי לכל תומי UNIX למינהם. רוב קריאות המערכת הן דומות לגרמי ומבינת המתכנת יש שקיפות, הפונקציה היא אותה פונקציה המימוש שונה. דברים בהם יש שוני הוא קובעים כגון מס ה-file desc שאפשר לפתוח,שגיאות והתראות מן המערכת (סיגנלים). כמו כן עם עובדים עם ncruses כדי לספק ממשק ב-shell יכול להיות הבדל בתוצאה (בדוק!). כמו שנאמר כבר רכן אתה יכול לבדוק האם אתה ב-unix או ב-לינוקס ע"י קוד כמו למשל ifdef# _BSD וכיוצא בזאת. יצא לי לבדוק תוכנה גם על FREEBSD וגם על לינוקס והיא נתנה את אותם תוצאות בשתיהם בלי אף שורת קוד לתיאמות מיוחדת.
 

linuxius

New member
יש IDE קטן וחמוד שנקרא ANJUTA

יש IDE קטן וחמוד שנקרא ANJUTA תחפש אותו ב-tucows במדור לינוקס שלהם. אתה יכול להוריד אותו כ-tarball או כ-RPM (אם אתה עובד על REDHAT או MANDRAKE). יש עוד כלים אבל לרוב זה מספיק כי שאר הכלים מנסים להלבש כ-IDE לבניית אפליקציות KDE (ספריית QT) או אפליקציות GNOME (ספריית GTK).
 

philips

New member
חלש...

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

voguemaster

New member
אני אנסה אותה, הורדתי.. ../images/Emo13.gif

נראית נחמד, מעניין כמה ידידותית למשתמש/ת
 

linuxius

New member
voguemaster תבדוק עם היא מצליחה...

voguemaster תבדוק עם היא מצליחה לדבג, אני זוכר שבגרסאות הקודמות יותר היא נתקעה בשלב הדיבוג כי היא לא תפעלה נכון את gdb.
 
למעלה