Compile and run a file.c using Tiny C Compile

gtau

New member
Compile and run a file.c using Tiny C Compile

שלום לכולם
אשמח לקבל הדרכה כיצד אני מקמפל תוכנית שרשמתי ב-visual studio ומקמפל אותה בTCC ?
 

gtau

New member
יש לי קוד שלא מתקמפל ביוניקס במערכת הפעלה לינ

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

BravoMan

Active member
ועל זה נאמר: WTF?

תראה, אין דבר כזה "קומפיילר חזק שיכול לעזור".

אם קוד מסוים לא עובר קומפילציה בסביבה מסוימת, הסיבה יכולה להיות לא רק בקוד עצמו, אלא גם בסביבה.

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

בכל מקרה, אם הקוד נועד ל-Unix, ניסיון לקמפל אותו על Windows לא ייתן לך כלום (אולי חוץ מהודעות שגיאה לא קשורות לבעיה שלך).

אם יש לך מחשב סביר עם 4GB RAM וצפונה, אתה יכול להריץ לינוקס או BSD במכונה ווירטואלית.

אבל, אפילו זה לא יבטיח שבעיית הקומפילציה שלך תיפתר, כי כאמור זה לא בהכרח הקוד עצמו.
 

אiהד

New member
למה שלא תקמפל עם mingw/cygwin

גרסאות GCC שיועדו לחלונות?
(אני די בטוח שעל לינוקס זה אמור להתקמפל עם GCC)
 

gtau

New member
אולי לא הסברתי את עצמי נכון,

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

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

BravoMan

Active member
כמה דברים:

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

אם הייתי צריך לנחש, הבעיה שלך היא שמיקום הקבצים או השמות שלהם מעט שונים במערכת האחרת (Linux ו-Unix רגישות לגודל אות בשמות קבצים, בעוד ש-Windows לא).

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

ב) Unix ו-Linux הם דברים שונים (למרות שיש דמיון מסוים בניהם).
בכל מקרה, אתה לא יכול לפתח קוד למערכת הפעלה בלי לדעת איך עובדים באותה מערכת הפעלה.
לכל הפחות, אם אתה רוצה לכתוב קוד שעובד גם ב-Windows וגם ב-Linux אתה צריך לדעת ממה להימנע, ולהשתמש רק ברכיבים הסטנדרטיים של שפת C או ספריות חוצות פלטפורמה.

בקיצור, אין כאן פתרון קסם, וכמו שאמרתי, לא משנה אם תבנה את הקוד של עם VS או עם TCC או עם Sygwin.

הדבר הראשון שיש לעשות כדי לבדוק את מקור הבעיה הוא לוודא שבכל פעם שאתה מפעיל פונקציה שעלולה להיכשל, אתה בודק אם היא אכן הצליחה ולפועל בהתאם.
למשל, בדוק ש-fopen (אם אתה משתמש בה) לא החזירה NULL.
כנ"ל לגבי malloc.

מעבר לזה, עליך ללמוד להשתמש ב-debugger על Linux או Unix (תלוי עבור מה אתה חייב לבנות את התוכנה).

בהצלחה!
 

selalerer

New member
כדאי להריץ את התוכנית תחת debugger ב-

Linux. לראות בדיוק מתי היא עפה. יתכן וכך כבר תמצא את הבעיה. אם לא יש כלים למציאת בעיות שכאלו כגון http://valgrind.org/
 
אפשר לחשוב מה יש כאן 'לדעת' כבר

תוריד WUBI, תריץ, פתח טרמינל קמפל את הקוד שלך עם gcc ותמצא את הבעייה.
גם סטודנטית לרפואת שיניים יכולה לעשות את זה.
 

nocgod

New member
1+

לגבי הסטודנטית לרפואת שיניים...בספק...
במשך השבוע האחרון התקנתי kubuntu על 6 מחשבים שונים לסטודנטים להנדסת תוכנה שנה ג במכללה פח בדרום הארץ...sad but true!
 
למעלה