שאלה כללית בשפת C

שאלה כללית בשפת C

שלום לכולם, מכל מה שקראתי על "מאחורי הקלעים" של C, הבנתי שיש שני שלבים בדרך ל-EXE - הידור וקישור. 1. מה זה בדיוק שלב הקישור, למה הקובץ המהודר לא מוכן לריצה? 2. עם איזה קבצים מקשר המהדר את הקובץ המהודר? מה יש בקבצים הללו? בתודה מראש!
 

vinney

Well-known member
מה הקשר ל C?

אלה שלבים לכל שפת תכנות. הידור הוא תרגום קובץ מקור (ב C או כל שפה אחרת) לקובץ "obj" - קובץ שפת מכונה של הקובץ. הקישור הוא תהליך בו כל קבצי ה "obj" של האפליקציה מקושרים ל EXE אחד. תזכור שגם אם אתה כותב אפליקציה בקובץ C בודד, היא מקושרת בסוף עם מספר ספריות סטנדרטיות, לכן שני השלבים הנפרדים. יש שפות בהן שלב ההידור והקישור מתבצע ברצף, ללא קובץ obj באמצע (דרך זכרון), כמו למשל turbo pascal או visual basic, והעניין בעיקרון תלוי בקומפיילר.
 

vinney

Well-known member
פשטות

אל תסבך בן אדם שלא יודע מה זה LINKER עם DLLים
 
אל תגזים!

אני יודע את ההבדל ביניהם, קבצי קישור סטטיים מקומפלים לתוך ה-EXE, מה שאין כן DLL שהקישור מתבצע בעת הרצת התוכנית. השאלה שלי היתה כללית יותר, מה יש בקבצי הקישור שאין בקובץ המקומפל, למה הקובץ המקומפל לא יכול לרוץ בפני עצמו.
 

selalerer

New member
בקבצי הקישור...

...עדיין מופיע לך שמות של פונקציות, בעוד בקובץ המקושר מופיע לך כבר ההיסט(הכתובת) של הפקודה הראשונה של הפונקציה. כמו כן קבצי הקישור אתה יכול לקשר לתוכניות שונות(להשתמש באותן הפונקציות בתוכניות שונות).
 
למעלה