dpkg-buildflags - מקוון בענן

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

תָכְנִית:

שֵׁם


dpkg-buildflags - מחזיר דגלי build לשימוש במהלך בניית החבילה

תַקצִיר


dpkg-buildflags [אוֹפְּצִיָה...] [הפקודה]

תיאור


dpkg-buildflags הוא כלי לאחזור דגלי קומפילציה לשימוש במהלך בניית דביאן
חבילות. דגלי ברירת המחדל מוגדרים על ידי הספק אך ניתן להרחיב אותם/לעקוף אותם
בכמה דרכים:

1. כלל המערכת עם /etc/dpkg/buildflags.conf;

2. למשתמש הנוכחי עם $XDG_CONFIG_HOME/dpkg/buildflags.conf איפה
$XDG_CONFIG_HOME ברירת מחדל ל $HOME/.config;

3. זמנית על ידי המשתמש עם משתני סביבה (ראה סעיף הסביבה);

4. באופן דינמי על ידי מנהל החבילה עם משתני סביבה מוגדרים באמצעות
דביאן/כללים (ראה סעיף הסביבה).

קבצי התצורה יכולים להכיל שני סוגים של הנחיות:

SET דגל ערך
תעקוף את הדגל ששמו דגל לקבל את הערך ערך.

לְהִתְפַּשֵׁט דגל ערך
רצועה מהדגל בשם דגל כל דגלי הבנייה הרשומים ב ערך.

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

הכנה מראש דגל ערך
הרחיב את הדגל בשם דגל על ידי הצגת האפשרויות שניתנו ב ערך. חלל הוא
מצורף לערך המוקדם אם הערך הנוכחי של הדגל אינו ריק.

קבצי התצורה יכולים להכיל הערות על שורות המתחילות ב-hash (#). ריק
מתעלמים גם מהקווים.

פקודות


--מזבלה הדפס לפלט סטנדרטי את כל דגלי ההידור והערכים שלהם. זה מדפיס דגל אחד
לכל שורה מופרדת מערכו בסימן שווה ("דגל=ערך”). זה
פעולת ברירת מחדל.

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

--סטָטוּס
הצג כל מידע שיכול להיות שימושי כדי להסביר את ההתנהגות של
dpkg-buildflags (מאז dpkg 1.16.5): משתני סביבה רלוונטיים, זרם
ספק, מצב כל דגלי המאפיינים. הדפס גם את דגלי המהדר המתקבלים עם
המקור שלהם.

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

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

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

קו ס"מ
טיעונים להעביר לשורת הפקודה של תוכנית בנייה כדי להשתמש בכל ה
דגלי הידור (מאז dpkg 1.17.0). ערכי הדגל מצוינים במעטפת
תחביר.

להגדיר
זהו כינוי מורשת עבור קו ס"מ.

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

--לקבל דגל
הדפס את ערך הדגל על ​​פלט סטנדרטי. יוצא עם 0 אם הדגל ידוע
אחרת יוצא עם 1.

--מָקוֹר דגל
הדפס את מקור הערך שמוחזר על ידי --לקבל. יוצא עם 0 אם הדגל
ידוע אחרת יוצא עם 1. המקור יכול להיות אחד מהערכים הבאים:

מוכר הדגל המקורי שהוגדר על ידי הספק מוחזר;

מערכת הדגל מוגדר/משתנה על ידי תצורה כלל מערכת;

המשתמש הדגל מוגדר/משתנה על ידי תצורה ספציפית למשתמש;

env הדגל מוגדר/משתנה על ידי תצורה ספציפית לסביבה.

--שאילתה-תכונות אזור
הדפס את התכונות המופעלות עבור אזור נתון (מאז dpkg 1.16.2). היחיד
אזורים המוכרים כיום בדביאן ונגזרות הם qa, לשחזור, לטהר
ו התקשות, ראה FEATURE שטחים סעיף לפרטים נוספים. יוצא עם 0 אם ה
האזור ידוע אחרת יוצא עם 1.

הפלט הוא בפורמט RFC822, עם קטע אחד לכל תכונה. לדוגמה:

תכונה: פאי
מופעל: לא

תכונה: מגן מחסנית
מופעל: כן

- עזרה הצג את הודעת השימוש וצא.

--גִרְסָה
הצג את הגרסה וצא.

נתמך דגלים


CFLAGS אפשרויות עבור מהדר C. ערך ברירת המחדל שהוגדר על ידי הספק כולל -g ו
רמת אופטימיזציה כברירת מחדל (-O2 בדרך כלל, או -O0 אם DEB_BUILD_OPTIONS
משתנה סביבה מגדיר לא).

CPPFLAGS
אפשרויות עבור מעבד הקדם C. ערך ברירת מחדל: ריק.

CXXFLAGS
אפשרויות עבור המהדר C++. כמו CFLAGS.

OBJCFLAGS
אפשרויות עבור מהדר Objective C. כמו CFLAGS.

OBJCXXFLAGS
אפשרויות עבור מהדר Objective C++. כמו CXXFLAGS.

GCJFLAGS
אפשרויות עבור מהדר GNU Java (gcj). תת-קבוצה של CFLAGS.

FFLAGS אפשרויות עבור מהדר Fortran 77. תת-קבוצה של CFLAGS.

FCFLAGS
אפשרויות עבור המהדר Fortran 9x. כמו FFLAGS.

LDFLAGS
אפשרויות שהועברו למהדר בעת קישור קובצי הפעלה או אובייקטים משותפים (אם
מקשר נקרא ישירות, אם כן -וול ו , יש לשלול מהאפשרויות הללו).
ערך ברירת מחדל: ריק.

דגלים חדשים עשויים להתווסף בעתיד אם יתעורר צורך (לדוגמה כדי לתמוך באחרים
שפות).

FEATURE שטחים


ניתן להפעיל ולהשבית כל תכונת אזור ב- DEB_BUILD_OPTIONS ו
DEB_BUILD_MAINT_OPTIONS ערך השטח של משתנה הסביבה עם ה-'+'ו'-' משנה.
לדוגמה, כדי לאפשר את התקשות תכונת "פאי" והשבתה את תכונת ה"חיזוק" לך
יכול לעשות זאת ב דביאן/כללים:

ייצוא DEB_BUILD_MAINT_OPTIONS=התקשות=+פאי,-חיזוק

התכונה המיוחדת את כל (תקף בכל אזור) ניתן להשתמש כדי להפעיל או להשבית את כל האזור
תכונות בו זמנית. ובכך להשבית את הכל ב- התקשות אזור ומאפשר
ניתן להשיג רק "פורמט" ו"חיזוק" עם:

ייצוא DEB_BUILD_MAINT_OPTIONS=התקשות=-הכל,+פורמט,+חיזוק

qa
ניתן להשתמש במספר אפשרויות של זמן הידור (מפורט להלן) כדי לסייע באיתור בעיות ב-
קוד מקור או מערכת בנייה.

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

כנרית הגדרה זו (מושבתת כברירת מחדל) מוסיפה אפשרויות דמה קנריות לדגלי הבנייה, אז
שניתן לבדוק את יומני הבנייה כיצד דגלי הבנייה מתפשטים ולאפשר
מציאת כל השמטה של ​​הגדרות דגל בנייה רגילות. היחיד הנתמך כרגע
הדגלים הם CPPFLAGS, CFLAGS, OBJCFLAGS, CXXFLAGS ו OBJCXXFLAGS עם דגלים מוגדרים ל
-D__DEB_CANARY_דגל_מזהה אקראי__, ו LDFLAGS מכוון ל -Wl,-z,deb-canary-מזהה אקראי.

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

כתובת
הגדרה זו (מושבתת כברירת מחדל) מוסיפה -fsanitize=כתובת ל LDFLAGS ו
-fsanitize=כתובת -fno-omit-frame-pointer ל CFLAGS ו CXXFLAGS.

חוט הגדרה זו (מושבתת כברירת מחדל) מוסיפה -fsanitize=חוט ל CFLAGS, CXXFLAGS ו
LDFLAGS.

לדלוף הגדרה זו (מושבתת כברירת מחדל) מוסיפה -fsanitize=דליפה ל LDFLAGS. זה נעשה
מושבת אוטומטית אם אחת מהן כתובת או חוט תכונות מופעלות, כמו
הם מרמזים על כך.

לא מוגדר
הגדרה זו (מושבתת כברירת מחדל) מוסיפה -fsanitize=לא מוגדר ל CFLAGS, CXXFLAGS
ו LDFLAGS.

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

פוּרמָט הגדרה זו (מופעלת כברירת מחדל) מוסיפה - -שגיאה=פורמט-אבטחה ל CFLAGS,
CXXFLAGS, OBJCFLAGS ו OBJCXXFLAGS. זה יזהיר על מחרוזת פורמט לא תקין
משתמש, וייכשל כאשר נעשה שימוש בפונקציות עיצוב באופן המייצג אפשרי
בעיות אבטחה. נכון לעכשיו, זה מזהיר מפני שיחות ל הדפס ו scanf פונקציות
כאשר מחרוזת הפורמט אינה מחרוזת מילולית ואין ארגומנטים של פורמט,
כמו ב printf(foo); במקום printf("%s", foo); זה עשוי להיות חור אבטחה אם
מחרוזת פורמט הגיעה מקלט לא מהימן ומכילה '%n'.

לְחַזֵק
הגדרה זו (מופעלת כברירת מחדל) מוסיפה -D_FORTIFY_SOURCE=2 ל CPPFLAGS. במהלך הקוד
דור המהדר יודע הרבה מידע על גדלי מאגר (איפה
אפשרי), ומנסה להחליף קריאות פונקציית מאגר לא מאובטחות באורך בלתי מוגבל
עם אלה מוגבלים לאורך. זה שימושי במיוחד עבור קוד ישן ומסורבל.
בנוסף, מחרוזות עיצוב בזיכרון הניתן לכתיבה המכילות '%n' חסומות. אם
יישום תלוי במחרוזת פורמט כזו, יהיה צורך לעקוף אותה.

שימו לב שכדי לאפשרות זו תהיה השפעה כלשהי, יש להרכיב גם את המקור
-O1 או גבוה יותר. אם משתנה הסביבה DEB_BUILD_OPTIONS מכיל לא, לאחר מכן
לְחַזֵק התמיכה תושבת, עקב אזהרות חדשות שיוצאו על ידי glibc 2.16
ואחר כך.

מגן מחסנית
הגדרה זו (מופעלת כברירת מחדל אם stackprotectorstrong אינו בשימוש) מוסיפה
-מגן מחסנית --param=ssp-buffer-size=4 ל CFLAGS, CXXFLAGS, OBJCFLAGS,
OBJCXXFLAGS, GCJFLAGS, FFLAGS ו FCFLAGS. זה מוסיף בדיקות בטיחות נגד מחסנית
מחליף. זה הופך התקפות רבות של הזרקת קוד פוטנציאליות להפסקה
מצבים. במקרה הטוב זה הופך פגיעויות של הזרקת קוד להכחשה
של שירות או לבעיות לא (בהתאם ליישום).

תכונה זו דורשת קישור מול glibc (או ספק אחר של
__stack_chk_fail), אז צריך להיות מושבת בעת בנייה עם -נוסטדליב or
-עומד בפני עצמו או דומה.

stackprotectorstrong
הגדרה זו (מופעלת כברירת מחדל) מוסיפה -fstack-protector-חזק ל CFLAGS,
CXXFLAGS, OBJCFLAGS, OBJCXXFLAGS, GCJFLAGS, FFLAGS ו FCFLAGS. זה חזק יותר
גרסה של מגן מחסנית, אך ללא עונשי ביצוע משמעותיים.

משבית מגן מחסנית ישבית גם את ההגדרה הזו.

לתכונה זו יש אותן דרישות כמו מגן מחסנית, ובנוסף גם
דורש gcc 4.9 ואילך.

relro הגדרה זו (מופעלת כברירת מחדל) מוסיפה -Wl,-z,relro ל LDFLAGS. במהלך התוכנית
לטעון, צריך לכתוב כמה קטעי זיכרון ELF על ידי המקשר. זה מסמן
המעמיס יהפוך את החלקים האלה לקריאה בלבד לפני העברת השליטה ל-
תכנית. הדבר הבולט ביותר מונע מתקפות החלפת GOT. אם אפשרות זו היא
נָכֶה, bindnow יהפוך לנכה גם כן.

bindnow
הגדרה זו (מושבתת כברירת מחדל) מוסיפה -Wl,-z,עכשיו ל LDFLAGS. במהלך טעינת התוכנית,
כל הסמלים הדינמיים פתורים, מה שמאפשר לסמן את כל ה-PLT כקריאה-
רק (בגלל relro מֵעַל). האפשרות לא יכולה להיות מופעלת אם relro לא
מאופשר.

פאי הגדרה זו (מושבתת כברירת מחדל) מוסיפה -fPIE ל CFLAGS, CXXFLAGS, OBJCFLAGS,
OBJCXXFLAGS, GCJFLAGS, FFLAGS ו FCFLAGS, ו -fPIE -פַּאִי ל LDFLAGS. עמדה
דרושים רכיבי הפעלה עצמאיים כדי לנצל את פריסת שטח הכתובת
אקראי, נתמך על ידי כמה גרסאות ליבה. בעוד ASLR כבר יכול להיות
נאכף עבור אזורי נתונים בערימה וב-heap (brk ו-mmap), אזורי הקוד חייבים
להיות מורכב כבלתי תלוי בתפקיד. ספריות משותפות כבר עושות את זה (-fPIC), אז
הם מרוויחים ASLR באופן אוטומטי, אבל אזורי טקסט בינאריים צריכים להיות בנוי PIE כדי להרוויח
ASLR. כאשר זה קורה, התקפות ROP (Return Oriented Programming) הן הרבה יותר קשות
מכיוון שאין מיקומים סטטיים שניתן להסתלק מהם במהלך פגיעה בזיכרון
לִתְקוֹף.

זה לא תואם -fPIC אז יש לנקוט זהירות כאשר בניין משותף
חפצים.

בנוסף, מכיוון ש-PIE מיושם באמצעות רישום כללי, יש ארכיטקטורות
(בעיקר i386) יכול לראות אובדן ביצועים של עד 15% בקטעי טקסט מאוד
עומסי עבודה כבדים של יישומים; רוב עומסי העבודה רואים פחות מ-1%. ארכיטקטורות עם
רישומים כלליים יותר (למשל amd64) אינם רואים עונש גבוה במקרה הגרוע.

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

נצחי
הגדרה זו (מופעלת כברירת מחדל) מוסיפה -Wdate-time ל CPPFLAGS. זה יגרום
אזהרות כאשר __זְמַן__, __תַאֲרִיך__ ו __TIMESTAMP__ נעשה שימוש בפקודות מאקרו.

הסביבה


ישנן 2 סטים של משתני סביבה שעושים את אותן פעולות, הראשונה
(DEB_דגל_op) אין להשתמש בפנים דביאן/כללים. זה מיועד לכל משתמש שרוצה
לבנות מחדש את חבילת המקור עם דגלי בנייה שונים. הסט השני
(DEB_דגל_MAINT_op) יש להשתמש רק ב דביאן/כללים על ידי מנהלי החבילות לשנות
דגלי הבנייה שנוצרו.

DEB_דגל_מַעֲרֶכֶת
DEB_דגל_MAINT_SET
ניתן להשתמש במשתנה זה כדי לאלץ את הערך המוחזר עבור הנתון דגל.

DEB_דגל_לְהִתְפַּשֵׁט
DEB_דגל_MAINT_STRIP
ניתן להשתמש במשתנה זה כדי לספק רשימה מופרדת מרווח של אפשרויות שיהיו
מופשט ממערכת הדגלים שהוחזרו עבור הנתון דגל.

DEB_דגל_לְצַרֵף
DEB_דגל_MAINT_APPEND
ניתן להשתמש במשתנה זה כדי להוסיף אפשרויות משלימות לערך המוחזר עבורו
הנתון דגל.

DEB_דגל_הכנה
DEB_דגל_MAINT_PREPEND
ניתן להשתמש במשתנה זה כדי להוסיף אפשרויות משלימות לערך המוחזר
על הנתון דגל.

DEB_BUILD_OPTIONS
DEB_BUILD_MAINT_OPTIONS
משתנים אלה יכולים לשמש משתמש או מתחזק כדי להשבית/לאפשר אזורים שונים
תכונות המשפיעות על דגלי בנייה. ה DEB_BUILD_MAINT_OPTIONS עקיפות משתנים
כל הגדרה ב DEB_BUILD_OPTIONS תכונה אזורים. ראה את FEATURE שטחים סעיף
לקבלת פרטים.

השתמש ב-dpkg-buildflags באופן מקוון באמצעות שירותי onworks.net



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