אנגליתצרפתיתגרמניתאיטלקיפורטוגזירוסיספרדי

סמל OnWorks

mips-linux-gnu-gcj - מקוון בענן

הפעל את mips-linux-gnu-gcj בספק אירוח חינמי של OnWorks באמצעות אובונטו אונליין, פדורה אונליין, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

זוהי הפקודה mips-linux-gnu-gcj שניתן להריץ בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו בחינם כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

תָכְנִית:

שֵׁם


gcj - מהדר מראש לשפת Java

תַקצִיר


gcj [-Idir...] [-d dir...]
[--CLASSPATH=נתיב] [--- classpath=נתיב]
[-fאוֹפְּצִיָה...] [--הַצפָּנָה=שם]
[--רָאשִׁי=שם כיתה] [-Dשם[=ערך]...]
[-C] [--מַשׁאָב שם משאב] [-d בספרייה]
[-Wלהזהיר...]
קובץ מקור...

תיאור


As gcj הוא רק עוד קצה קדמי gcc, הוא תומך ברבות מאותן אפשרויות כמו gcc.
מדריך זה מתעד רק את האפשרויות הספציפיות gcj.

אפשרויות


קֶלֶט ו תפוקה קבצים
A gcj הפקודה היא כמו א gcc הפקודה, בכך שהיא מורכבת ממספר אפשרויות וקובץ
שמות. הסוגים הבאים של שמות קבצי קלט נתמכים:

פילה.java
קבצי מקור של Java.

פילה.מעמד
קבצי Java bytecode.

פילהZip.
פילה. צנצנת
ארכיון המכיל קובץ ".class" אחד או יותר, שכולם מורכבים. ה
הארכיון עשוי להיות דחוס. קבצים בארכיון שאינם מסתיימים ב .מעמד יש לו
מטופלים כקבצי משאבים; הם מורכבים לקובץ האובייקט המתקבל כ הליבה:
כתובות אתרים.

@פילה
קובץ המכיל רשימה מופרדת ברווח לבן של שמות קבצי קלט. (כרגע, אלה
כולם חייבים להיות קובצי מקור ".java", אבל זה עשוי להשתנות.) כל קובץ בעל שם מורכב,
ממש כאילו זה היה בשורת הפקודה.

ספריה.a
ספריה.לכן
-llibname
ספריות לשימוש בעת קישור. ראה את gcc מדריך ל.

אתה יכול לציין יותר מקובץ קלט אחד ב- gcj שורת הפקודה, ובמקרה זה הם יעשו זאת
כולם יורכבו. אם אתה מציין "-o שם קובץ" אפשרות, כל קבצי הקלט יהיו
הידור יחד, תוך הפקת קובץ פלט יחיד, בשם שם קובץ. זה מותר אפילו
בעת שימוש ב-"-S" או "-c", אך לא בעת שימוש ב-"-C" או "--resource". (זו הרחבה
מעבר למישור מה gcc מאפשר.) (אם צוין יותר מקובץ קלט אחד, כולם חייבים
כרגע הם קבצי ".java", אם כי אנו מקווים לתקן זאת.)

קֶלֶט אפשרויות
gcj יש אפשרויות לשלוט היכן הוא נראה כדי למצוא קבצים שהוא צריך. לדוגמה, gcj יכול
צריך לטעון מחלקה שמתייחסת אליה הקובץ שהוא התבקש להדר. כמו
מהדרים אחרים לשפת Java, gcj יש מושג של א בכיתה נתיב. יש
מספר אפשרויות ומשתני סביבה שניתן להשתמש בהם כדי לתפעל את נתיב המחלקה.
מתי gcj מחפש מחלקה נתונה, הוא מחפש את נתיב המחלקה מחפש התאמה .מעמד
or .java קובץ. gcj מגיע עם נתיב מחלקה מובנה שמצביע על המותקן
libgcj.jar, קובץ המכיל את כל המחלקות הסטנדרטיות.

בטקסט שלהלן, ספרייה או רכיב נתיב יכולים להתייחס לספריה בפועל
על מערכת הקבצים, או ל-a Zip. or . צנצנת קובץ, אשר gcj יחפש כאילו זה א
במדריך.

-Idir
כל הספריות המצוינות על ידי "-I" נשמרות בסדר ומוצמדות לנתיב המחלקה
בנוי מכל האפשרויות האחרות. אלא אם כן תאימות לכלים כמו "javac"
חשוב, אנו ממליצים להשתמש תמיד ב-"-I" במקום באפשרויות האחרות עבור
מניפולציה של נתיב הכיתה.

--classpath=נתיב
זה מגדיר את נתיב הכיתה ל נתיב, רשימה מופרדת בנקודתיים של נתיבים (ב-Windows מבוסס
מערכות, רשימה נפרדת של נתיבים בנקודה-פסיק). זה לא עוקף את המובנה
נתיב חיפוש ("אתחול").

--CLASSPATH=נתיב
מילה נרדפת שהוצאה משימוש עבור "--classpath".

--bootclasspath=נתיב
היכן ניתן למצוא את המחלקות המובנות הסטנדרטיות, כגון "java.lang.String".

--extdirs=נתיב
עבור כל ספרייה ב- נתיב, מקם את התוכן של ספרייה זו בסוף ה-
נתיב כיתה.

CLASSPATH
זהו משתנה סביבה שמכיל רשימה של נתיבים.

נתיב הכיתה הסופי בנוי כך:

* קודם כל כל המדריכים שצוינו באמצעות "-I".

* אם --- classpath מצוין, הערך שלו מצורף. אחרת, אם ה-"CLASSPATH"
משתנה סביבה מצוין, ואז הערך שלו מצורף. אחרת, הנוכחי
ספרייה (".") מצורף.

* אם צוין "--bootclasspath", הוסף את הערך שלו. אחרת, הוסף את המובנה
ספריית מערכת, libgcj.jar.

* לבסוף, אם צוין "--extdirs", הוסף את התוכן של הקובץ שצוין
ספריות בסוף נתיב הכיתה. אחרת, צרף את התוכן של
Extdirs מובנים ב-"$(prefix)/share/java/ext".

ה-classfile שנבנה על ידי gcj עבור המחלקה "java.lang.Object" (וממוקם ב-"libgcj.jar")
מכיל תכונה מיוחדת באורך אפס "gnu.gcj.gcj-compiled". המהדר מחפש
תכונה זו בעת טעינת "java.lang.Object" ותדווח על שגיאה אם ​​היא לא תימצא,
אלא אם הוא קומפילציה לקוד בייט (ניתן להשתמש באפשרות "-fforce-classes-archive-check" כדי
לעקוף התנהגות זו במקרה הספציפי הזה.)

-fforce-classes-archive-check
זה מאלץ את המהדר לבדוק תמיד את תכונת אורך האפס המיוחדת
"gnu.gcj.gcj-compiled" ב-"java.lang.Object" והפקת שגיאה אם ​​היא לא נמצאת.

-fsource=גִרְסָה
אפשרות זו משמשת לבחירת גרסת המקור המקובלת על ידי gcj. ברירת המחדל היא 1.5.

קידודים
שפת התכנות Java משתמשת ביוניקוד לאורך כל הדרך. במאמץ להשתלב היטב
עם מקומות אחרים, gcj מאפשר .java קבצים שייכתבו באמצעות כמעט כל קידוד. gcj
יודע להמיר את הקידודים הללו לקידוד הפנימי שלו בזמן ההידור.

אתה יכול להשתמש ב-"--encoding=שֵׁם" אפשרות לציין קידוד (בעל תו מסוים
set) לשימוש עבור קבצי מקור. אם זה לא מצוין, קידוד ברירת המחדל מגיע
המקום הנוכחי שלך. אם למערכת המארחת שלך אין תמיכה מקומית מספקת, אז gcj
מניח שקידוד ברירת המחדל הוא ה UTF-8 קידוד של Unicode.

כדי ליישם "--encoding", gcj פשוט משתמש בשגרת ההמרה "iconv" של הפלטפורמה המארחת.
זה אומר שבפועל gcj מוגבל על ידי היכולות של הפלטפורמה המארחת.

השמות המותרים לארגומנט "--encoding" משתנים מפלטפורמה לפלטפורמה (מכיוון שהם
אינם סטנדרטיים בשום מקום). למרות זאת, gcj מיישם את הקידוד בשם UTF-8
באופן פנימי, כך שאם תבחר להשתמש בזה עבור קבצי המקור שלך, אתה יכול להיות בטוח שזה
יעבוד על כל מארח.

אזהרות
gcj מיישם מספר אזהרות. כמו עם גנרי אחר gcc אזהרות, אם אפשרות של
טופס "-Wfoo" מאפשר אזהרה, ואז "-Wno-foo" ישבית אותה. כאן בחרנו לעשות
תעד את צורת האזהרה שתשפיע -- ברירת המחדל היא ה
ההפך ממה שרשום.

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

-Wextraneous-נקודה-פסיק
זה גורם gcj להזהיר מפני הצהרות ריקות. הצהרות ריקות היו
הוצא משימוש.

-לא מיושן
אפשרות זו תגרום gcj לא להזהיר כאשר קובץ מקור חדש יותר מההתאמה שלו
קובץ כיתה. כברירת מחדל gcj יזהיר על כך.

-לא הוצא משימוש
אזהרה אם מתייחסים למחלקה, שיטה או שדה שהוצאו משימוש.

-לא בשימוש
זה אותו דבר כמו gccשל "-Wunused".

- קיר
זה זהה ל-"-Wredundant-modifiers -Wextraneous-semicolon -Wunused".

מקשר
כדי להפוך יישום Java לתוכנית ניתנת להרצה, עליך לקשר אותו עם הדרוש
ספריות, בדיוק כמו עבור C או C++. המקשר כברירת מחדל מחפש פונקציה גלובלית בשם
"רָאשִׁי". מאז Java אין פונקציות גלובליות, ואוסף של מחלקות Java עשוי
יש יותר ממחלקה אחת עם שיטה "ראשית", עליך ליידע את המקשר איזו מהן
אותן שיטות "עיקריות" שעליו להפעיל בעת הפעלת היישום. אתה יכול לעשות את זה ב
כל אחת מהדרכים הבאות:

* ציין את המחלקה המכילה את שיטת ה"ראשית" הרצויה בעת קישור האפליקציה,
באמצעות הדגל "--main", המתואר להלן.

* קשר את חבילות Java לספרייה משותפת (dll) במקום לקובץ הפעלה. לאחר מכן
הפעל את היישום באמצעות תוכנית "gij", וודא ש-"gij" יכול למצוא את
ספריות שהוא צריך.

* קשר את חבילות ה-Java עם הדגל "-lgij", המקשר בשגרת ה"ראשית".
מהפקודה "gij". זה מאפשר לך לבחור את המחלקה שהשיטה ה"עיקרית" שלה אתה
רוצה להפעיל כאשר אתה מפעיל את היישום. אתה יכול גם להשתמש בדגלי "gij" אחרים, כגון
דגלים "-D" להגדרת מאפיינים. שימוש בספריית "-lgij" (ולא ב-"gij"
לתוכנית של המנגנון הקודם) יש כמה יתרונות: היא תואמת לסטטי
קישור, ואינו דורש הגדרה או התקנה של ספריות.

אפשרויות "gij" אלה קשורות לקישור קובץ הפעלה:

--main=CLASSNAME
אפשרות זו משמשת בעת הקישור כדי לציין את שם המחלקה ששיטת ה"ראשית" שלה
יש להפעיל כאשר קובץ ההפעלה המתקבל מופעל.

-Dשם[=ערך]
ניתן להשתמש באפשרות זו רק עם "--main". הוא מגדיר מאפיין מערכת בשם שם
עם ערך ערך. אם ערך לא צוין אז זה כברירת מחדל למחרוזת הריקה.
מאפייני מערכת אלו מאותחלים עם ההפעלה של התוכנית וניתן לאחזר אותם
בזמן ריצה בשיטת "java.lang.System.getProperty".

-לגij
צור יישום שעיבוד שורת הפקודה שלו הוא זה של הפקודה "gij".

אפשרות זו היא חלופה לשימוש ב---main; אתה לא יכול להשתמש בשניהם.

-static-libgcj
אפשרות זו גורמת לקישור להתבצע כנגד גרסה סטטית של זמן הריצה libgcj
סִפְרִיָה. אפשרות זו זמינה רק אם קיימת תמיכת קישור תואמת.

זְהִירוּת: קישור סטטי של libgcj עלול לגרום להשמטת חלקים חיוניים של libgcj.
חלקים מסוימים של libgcj משתמשים בהשתקפות כדי לטעון מחלקות בזמן ריצה. מאז המקשר עושה
לא רואה את ההפניות הללו בזמן הקישור, הוא יכול להשמיט את השיעורים המופנים. ה
התוצאה היא בדרך כלל (אך לא תמיד) "ClassNotFoundException" שנזרק בזמן ריצה.
יש לנקוט משנה זהירות בעת שימוש באפשרות זו. לפרטים נוספים ראה:
<http://gcc.gnu.org/wiki/Statically%20linking%20libgcj>

קופונים דור
בנוסף לרבים gcc אפשרויות בקרה על יצירת קוד, gcj יש מספר אפשרויות
ספציפית לעצמו.

-C אפשרות זו משמשת כדי לספר gcj ליצור קוד בתים (.מעמד קבצים) במקום אובייקט
קוד.

--מַשׁאָב שם משאב
אפשרות זו משמשת כדי לספר gcj לקמפל את התוכן של קובץ נתון לקוד אובייקט
כך שניתן לגשת אליו בזמן ריצה עם המטפל בפרוטוקול הליבה as הליבה:/מַשׁאָב-
שם. שים לב ש שם משאב הוא שם המשאב כפי שנמצא בזמן ריצה; ל
למשל, זה יכול לשמש בקריאה אל "ResourceBundle.getBundle". הקובץ בפועל
יש לציין בנפרד שם שייערך בדרך זו.

-ftarget=גִרְסָה
זה יכול לשמש עם -C כדי לבחור את הגרסה של bytecode שנפלט על ידי gcj. ה
ברירת המחדל היא 1.5. כאשר לא יוצר bytecode, לאפשרות זו אין השפעה.

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

-fno-bounds-check
כברירת מחדל, gcj יוצר קוד שבודק את הגבולות של כל אינדקס המערך
פעולות. עם אפשרות זו, בדיקות אלו מושמטות, מה שיכול לשפר את הביצועים
עבור קוד שמשתמש במערכים באופן נרחב. שים לב שזה יכול לגרום לבלתי צפוי
התנהגות אם הקוד המדובר אכן מפר את אילוצי גבולות המערך. זה
בטוח להשתמש באפשרות זו אם אתה בטוח שהקוד שלך לעולם לא יזרוק
"אינדקס מערך מחוץ לתחום Exception".

-fno-store-check
אל תיצור בדיקות חנות מערך. בעת אחסון אובייקטים במערכים, בדיקת זמן ריצה
נוצר בדרך כלל על מנת להבטיח שהאובייקט תואם להקצאה
סוג הרכיב של המערך (שאולי לא ידוע בזמן ההידור). עם זה
אפשרות, בדיקות אלו מושמטות. זה יכול לשפר את הביצועים עבור קוד שמאחסן
אובייקטים לתוך מערכים לעתים קרובות. זה בטוח להשתמש באפשרות זו אם אתה בטוח שלך
קוד לעולם לא יזרוק "ArrayStoreException".

-ג'ני
עם gcj ישנן שתי אפשרויות לכתיבת שיטות מקוריות: CNI ו-JNI. כברירת מחדל
gcj מניח שאתה משתמש ב-CNI. אם אתה מרכיב מחלקה עם שיטות מקוריות, ו
שיטות אלו מיושמות באמצעות JNI, אז עליך להשתמש ב-"-fjni". אפשרות זו
גורמים gcj כדי ליצור בולים שיפעילו את שיטות ה-JNI הבסיסיות.

-fno-assert
אל תזהה את מילת המפתח "טענה". זה נועד לתאימות עם גרסאות ישנות יותר
של מפרט השפה.

-fno-optimize-static-class-initialization
כאשר רמת האופטימיזציה גדולה או שווה ל-"-O2", gcj ינסה לייעל את
דרך קריאות לתוך זמן הריצה מתבצעות כדי לאתחל מחלקות סטטיות בשימוש הראשון בהן
(אופטימיזציה זו לא מתבצעת אם צוין "-C") בעת הידור למקורי
קוד, "-fno-optimize-static-class-initialization" יכבה את האופטימיזציה הזו,
ללא קשר לרמת האופטימיזציה בשימוש.

--disable-assertions[=כיתה או חבילה]
אל תכלול קוד לבדיקת קביעות בקוד הקומפילציה. אם
"=כיתה או חבילה" חסר משבית את יצירת קוד הטענה עבור כל המחלקות,
אלא אם כן דגל "--enable-assertions" ספציפי יותר. אם כיתה או חבילה
הוא שם מחלקה, משבית רק יצירת בדיקות הצהרות בתוך המחלקה בעלת השם או
המעמדות הפנימיים שלו. אם כיתה או חבילה הוא שם חבילה, משבית את היצירה
בדיקות הצהרות בתוך החבילה בעלת השם או חבילת משנה.

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

--enable-assertions[=כיתה או חבילה]
יוצר קוד לבדיקת הצהרות. אולי השם שגוי של האפשרות, כפי שאתה עדיין צריך
כדי להפעיל בדיקת הצהרות בזמן ריצה, ואנחנו לא תומכים בשום דרך קלה לעשות זאת
זֶה. אז הדגל הזה עדיין לא מאוד שימושי, מלבד לעקוף חלקית
"--בטל-הצהרות".

-finddirect-dispatch
gcj יש ABI תאימות בינארית מיוחדת, אשר מופעלת על ידי
אפשרות "-findirect-dispatch". במצב זה, הקוד שנוצר על ידי gcj מכבד את
ערבויות תאימות בינארית במפרט שפת Java, והמתקבלות מכך
קובצי אובייקט אינם צריכים להיות מקושרים ישירות כנגד התלות שלהם. במקום זאת,
כל התלות נבדקת בזמן הריצה. זה מאפשר ערבוב חופשי של מתפרשים ו
קוד קומפילד.

שימו לב שכרגע ניתן להשתמש ב-"-findirect-dispatch" רק בעת הידור .מעמד
קבצים. זה לא יעבוד בעת קומפילציה ממקור. CNI גם עדיין לא עובד עם
התאימות הבינארית ABI. מגבלות אלו יוסרו בעתיד
לשחרר.

עם זאת, אם אתה מהדר קוד CNI עם ה-ABI הסטנדרטי, אתה יכול לקרוא לו מקוד
נבנה עם ABI התאימות הבינארית.

-fbootstrap-classes
ניתן להשתמש באפשרות זו כדי לומר ל-"libgcj" שיש לטעון את המחלקות הקומפיליות על ידי
מטעין האתחול, לא מטעין מחלקת המערכת. כברירת מחדל, אם אתה קומפלור מחלקה
ולקשר אותו לקובץ הפעלה, הוא יטופל כאילו הוא נטען באמצעות ה-
מטעין מחלקות מערכת. זה נוח, שכן זה אומר שדברים כמו
"Class.forName()" יחפש CLASSPATH כדי למצוא את הכיתה הרצויה.

-השתקפות-freduced
אפשרות זו גורמת לקוד שנוצר על ידי gcj להכיל כמות מופחתת של הכיתה
מטא-נתונים המשמשים לתמיכה בשיקוף זמן ריצה. העלות של חיסכון זה הוא אובדן של
היכולת להשתמש ביכולות השתקפות מסוימות של זמן הריצה הסטנדרטי של Java
סביבה. כאשר מגדירים את כל המטא-נתונים פרט לזה שנדרש כדי להשיג נכון
סמנטיקה של זמן ריצה מבוטלת.

עבור קוד שאינו משתמש ברפלקציה (כלומר סריאליזציה, RMI, CORBA או שיטות קריאה
בחבילת "java.lang.reflect", "-freduced-reflection" יגרום לתקינות
פעולה עם חיסכון בגודל קוד ההפעלה.

JNI ("-fjni") ו-ABI התאימות הבינארית ("-findirect-dispatch") לא עובדים
כראוי ללא מטא-נתונים מלאים. בגלל זה, זו שגיאה לשימוש
אפשרויות אלה עם "-freduced-reflection".

זְהִירוּת: אם אין מטא-נתונים שיקוף, קוד המשתמש ב-"SecurityManager" עשוי
לא עובד כמו שצריך. גם קריאה ל-"Class.forName()" עלולה להיכשל אם לשיטת הקריאה יש
אין מטא-נתונים השתקפות.

קבע-זמן אפשרויות
כמה gcj אפשרויות יצירת הקוד משפיעות על ה-ABI המתקבל, וכך יכול להיות רק
ניתן באופן משמעותי כאשר "libgcj", חבילת זמן הריצה, מוגדרת. "libgcj" שם את
אפשרויות מתאימות מקבוצה זו לתוך א מפרט קובץ שנקרא על ידי gcj. האפשרויות הללו
רשומים כאן לשלמות; אם אתה משתמש ב-"libgcj" אז לא תרצה לגעת
אפשרויות אלה.

-fuse-boehm-gc
זה מאפשר שימוש בקוד סימון מפת סיביות של Boehm GC. במיוחד זה גורם
gcj להכניס מתאר סימון אובייקטים לכל vtable.

-fhash-סנכרון
כברירת מחדל, נתוני סנכרון (הנתונים המשמשים ל"סנכרון", "המתנה" ו
"להודיע") מצביע על ידי מילה בכל אובייקט. עם האפשרות הזו gcj מניח את זה
מידע זה מאוחסן בטבלת hash ולא באובייקט עצמו.

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

-fcheck-references
במערכות מסוימות יש צורך להכניס בדיקות מוטבעות בכל פעם שניגשים לאובייקט
באמצעות הפניה. במערכות אחרות לא תזדקק לזה כי מצביע null ניגש
נתפסים אוטומטית על ידי המעבד.

-פיוז-אטומי-מבנים
במערכות מסוימות, GCC יכול ליצור קוד עבור פעולות אטומיות מובנות. השתמש בזה
אפשרות לאלץ את gcj להשתמש ברכיבים המובנים הללו בעת הידור קוד Java. איפה זה
יכולת קיימת היא אמורה להיות מזוהה אוטומטית, כך שבדרך כלל לא תזדקק לה
כדי להשתמש באפשרות זו.

השתמש ב-mips-linux-gnu-gcj באינטרנט באמצעות שירותי onworks.net


Ad


Ad

התוכניות המקוונות האחרונות של לינוקס ו-Windows