Demystifying Linux ကို Build Automation - အကို GNU စာအုပ် Make

အဖြစ် Linux ကိုအကြောင်းကိုရေးသားခြင်းနဲ့ကျွန်မကိုလည်း software ကိုဖွံ့ဖြိုးတိုးတက်မှုအတွက်အကြီးအကျယ်ပါဝင်ပတ်သက်ဖြစ်ကြောင်းကိုဖြန့်ဝေခြင်းနှင့် tools များနှင့် ပတ်သက်. ပြန်လည်သုံးသပ်ချက်များနှင့်လဲ tutorial ရေးသားခြင်း။ ကံမကောင်းစွာပဲ, အဲဒီ software ကိုဖွံ့ဖြိုးတိုးတက်မှု၏ 99.9% ကို Windows platform ပေါ်တွင်အရပ်ဌာနကြာပါသည်။

ကျွန်မတစ်ဦးက C ++ အဖြစ် 20 နှစ်ကျော်အတွေ့အကြုံရှိသည် Visual Basic, VB.NET, နှင့် C # developer နဲ့ကျွန်မလည်းနှစ်ဦးစလုံးတစ်ဦး DBA နှင့်ဆော့ဖ်ဝဲရေးသူအဖြစ် SQL Server တို့တစ် DAB လက်ဖြစ်၏။

အဘယ်သို့ငါမှာဒါမကောငျးဖွစျပါ၏ Linux တို့အတွက် software ကိုဖွံ့ဖြိုးဆဲဖြစ်ပါတယ်။ ဒါဟာငါတကယ်အတူနှောင့်အယှက်ဖူးဘူးပဲတစ်ခုခုပါပဲ။ အဓိကအကြောင်းရင်းတစ်နေ့တာအတွင်းဆော့ဖ်ဝဲကိုဖွံ့ဖြိုးဆဲထိုနောက်ငါကျင့်ချင်ပြီးခဲ့သည့်အရာကပို software များရေးသားခြင်းညနေခင်း၏ပတ်ပတ်လည်ထိုင်ဖြစ်ပါတယ်။

ငါ scripting နည်းဖြင့် tinkering နှင့်ထူးဆန်းသေးငယ်တဲ့ program ကိုရေးသားခြင်းများကဲ့သို့သိသိသာသာလုပ်ပါ။ ဤရွေ့ကားအီလက်ထရွန်းနစ်အခြေစိုက်ဘို့အများအားဖြင့်ဖြစ်ကြောင်း ယင်း Raspberry Pi အပေါ်စီမံကိန်းများကို

Windows platform ပေါ်တွင်အများအပြား developer များသူတို့ကပထမဦးဆုံး Linux ကိုကူးရွှေ့သည့်အခါနှင့်အတူဆင်းရဲဒုက္ခကိုခံရကြလိမ့်မည်ဟုအရာတစ်ခုမှာ၎င်းတည်ဆောက်ရန်လိုအပ်သည်ကိရိယာများနှင့်အထုပ် applications များအကြောင်းကိုလေ့လာသင်ယူသည်။

ယေဘုယျအားဖြင့်သူတို့ကုဒ် (PHP, Perl, Python ကို) ပြုစုမလိုအပ်ပါဘူးနှင့်ဖိုင်များကိုဝဘ်ဆာဗာတွင်ထားရာအရပ်မှတပ်ဖြန့်နေကြသည်ဘာဖြစ်လို့လဲဆိုတော့ဝေးနေဖြင့်ဖွံ့ဖြိုးတိုးတက်ဖို့လျှောက်လွှာများ၏အလွယ်ကူဆုံးအမျိုးအစားကို web applications များဖြစ်ကြသည်။

Linux တို့အတွက် built applications များ၏တစ်ဦးကကြီးမားသောအရေအတွက်ကနေ C, C ++ သို့မဟုတ် Python ကို အသုံးပြု. တီထွင်နေကြပါတယ်။ တစ်ခုတည်းကို C program ကိုပြုစုအတော်လေးလွယ်ကူသည်သင်မူကား, အမှုအရာနည်းနည်းပိုပြီးလှည် get မျိုးစုံမှီခိုနှင့်အတူကို C ပရိုဂရမ်အတော်များများ compile ဖို့လိုအပ်သည့်အခါ။

ကို GNU Make သင်အဖန်ဖန်နှင့်ကွဲပြားခြားနားတဲ့နည်းလမ်းတွေထဲမှာသင့်ရဲ့ applications များ compile ကူညီပေးသည်သည့်တည်ဆောက်အလိုအလျောက် scripting နည်းကိရိယာတခုဖြစ်တယ်။ ဥပမာအားဖြင့်, သင်သည်တန်ဖိုးပေါ် မူတည်. 64-bit နဲ့ 32-bit မှာသုံးပြီး application တစ်ခု compile တံ့သောတစ်ဦး parameter သည်ထောက်ပံ့ပေးနိုင်သည်။

အဆိုပါကို GNU စာအုပ်ကို GNU ၏အသုံးပြုသူများသည် Make ကို GNU နဲ့ဆက်စပ်ရှုပ်ထွေးတစ်ဦးကိုနူးညံချုပ်ကိုင်ထားရ Make ကိုကူညီယောဟနျသဂရေဟမ်-Cumming ကရေးသားထားပြီးလုပ်ပါ။

အဆိုပါစာအုပ်သည်ခြောက်အခန်းကြီးသို့ခွဲထွက်သည်:

  1. အဆိုပါအခြေခံပြန်လည်လည်ပတ်
  2. Makefile Debugging
  3. အဆောက်အဦးများနှင့်ပြန်လည်တည်ဆောက်ရေး
  4. မထင်မှတ်ဖွယ်အန္တရာယ်နှင့်ပြဿနာများ
  5. အဆိုပါစာအိတ်တွန်းအားပေး
  6. အဆိုပါကို GNU နျ Standard စာကြည့်တိုက် Make

ငါကကဲ့သို့သောသစ်တစ်ခုဘာသာရပ်လေ့လာသင်ယူတဲ့အခါသင်မျှော်လင့်ထားလိမ့်မည်ဟုအချို့သော ပတ်သက်. ရှင်းလင်းပြောကြားကင်းမဲ့သောကွောငျ့စာအုပ်ကယ့်ကိုအခုမှစမှာပါရည်ရွယ်ကြောင်းယုံကြည်ကြဘူး "ဘာကို GNU Make ပါသလဲ", "ငါဘယ်လိုလုပ်ဖိုင်ကိုဖန်တီးသလဲ?", "အဘယ်ကြောင့် တဦးတည်းအားဖြင့်တစ်ဦးချင်းစီအစီအစဉ်ကိုတဦးတည်းပြုစုသည်ထက်ပိုကောင်းတဲ့ Make အသုံးပြုနေသည်? " နှင့် "ငါဘယ်လိုကို GNU Make သုံးပြီးအစီအစဉ်များကို compile ပါသလဲ" ။ ဤအဘာသာရပ်ဒေသများအားလုံးဖုံးလွှမ်းလျက်ရှိသည် ကို manual Make သည် GNU

ဆန့်ကျင်အဖြစ်ပထမဦးဆုံးကျအခနျးက "အခြေခံပြန်လည်လည်ပတ်" ဟုခေါ်ကြောင်းအမှန်မှာ "ဒီအခြေခံ" ရှင်းလင်းစွာသင်စတင်ရှေ့တော်၌ထိုဘာသာရပ်အမှု၌မြေပြင်ရှိသည်ဖို့မျှော်လင့်ထားကြသည်ကွောငျးဖျောပွသဖို့။

ပထမဦးဆုံးအခနျးတှငျထိုကဲ့သို့သော variable တွေကို, ပညတ်တော်တို့ကိုနှင့် $ (Shell က) ပတ်ဝန်းကျင်ကအသုံးပြုပတ်ဝန်းကျင်မှာ၏အသုံးပြုမှုအဖြစ်အားလုံးအခြေခံဖုံးလွှမ်း။ သင်တို့အပေါ်မှာအခန်းရွေ့လျားအဖြစ်နှိုင်းယှဉ်, စာရင်းများနှင့်အသုံးပြုသူသတ်မှတ်ထားသောလုပ်ငန်းဆောင်တာများ၏ဘာသာရပ်သို့ရ။

သငျသညျကို GNU သုံးပြီးခဲ့ကြပါလျှင်ခဏ Make ပေမယ့်သေးသငျသညျခကျြခငျြးသိသာမကျမည်အကြောင်းအချို့ရှုပ်ထွေးပွေလီလှနားလည်ကူညီပေးပါမည်သည့်အချို့သောကောင်းတဲ့အရိပ်အမြွက်နှင့်အကြံပြုချက်များရှိပါတယ်ကိုယ့်ကိုယ်ကိုကျွမ်းကျင်သူတစ်ဦးထည့်သွင်းစဉ်းစားကြဘူး။

ဒုတိယအခနျးမှာတည်ဆောက် script များအတွက်ထောင်ချောက်အမှားအယွင်းများဖို့ကြိုးစားနေခဲ့ကြသူသငျသညျမြားအဘို့အ godsend ဖြစ်လိမ့်မည်။ အဆိုပါ "Makefile Debugging" အပိုင်း Makefiles debugging များအတွက်အလွန်အစွမ်းထက်တဲ့အရိပ်အမြွက်နှင့်အကြံပြုချက်များကိုအပြည့်အဝဖြစ်ပြီး, variable ကိုတန်ဖိုးများကိုပုံနှိပ်ခြင်းနှင့်ပင်တိုင်း variable ကို၏တန်ဖိုးစွန့်ပစ်အပေါ်ကဏ္ဍများပါဝင်သည်။ နောက်ထပ်ပေါ်အခန်းသို့, သင် script များမှတဆင့်ခြေလှမ်းမှအသုံးပွုနိုငျသောကို GNU Debugger ရန်လမ်းညွှန်ရှိသေး၏။

အဆိုပါတတိယအခနျးမှာဥပမာ makefiles ပေမယ့်သင်တို့ကိုထပ်ကာထပ်ကာ run နိုင်မ Makefiles ကိုဖန်တီးရန်သင်မည်သို့ပြသထားတယ်ထက်ပိုမိုပါဝင်သည်။

= = နှင့် ifndef နှင့်:? "မထင်မှတ်ဖွယ်အန္တရာယ်နှင့်ပြဿနာများ" ဒီလို = အဖြစ်အချို့သောအသုံးအနှုန်းများအကြားခြားနားချက်များမှာအကြည့်နှင့်။

ငါစာအုပ်ကတဆင့်နောက်ထပ်သွားလေ၏အဖြစ်ငါတက်ကြွစွာ Make ငါ့ပညာအတတ်ဘာသာရပ်ကိစ္စအချို့ကိုငါ့ဦးခေါင်းအပေါ်အလွန်သွားလေ၏ဟာအလွန်အခြေခံအဆင့်မှာသောကွောငျ့ကို GNU သုံးစွဲဖို့ကြိုးစားနေမဟုတ်ဘူးဘာဖြစ်လို့လဲဆိုတော့ကြောင်းတွေ့ရှိခဲ့ပါတယ်။

အချိန်ကိုအားဖြင့်ငါသည်ငါ့မျက်စိအတန်ငယ်ကျော် glazed က "ဒီစာအိတ်တွန်းအားပေး" အခန်းကိုရတယ်။

ငါသည်ဤစာအုပ်တွင်တက် Sum ခဲ့လျှင်ငါ့အအဓိကအကျဉ်းချုပ်, စာရေးသူရှင်းလင်းစွာကသူ့ပစ္စည်းပစ္စယသိတယ်နဲ့တတ်နိုင်သမျှသတင်းအချက်အလက်ပေါ်ရှောက်သွားဖို့ကြိုးစားခဲ့ပြီဖြစ်ပါတယ်။

အဆိုပါပြဿနာအကြောင်းအရာကိစ္စကျွမ်းကျင်သူတစ်ခုခုရေးမှတ်ဖို့ကြိုးစားပါတယ်သည့်အခါတခါတရံသူတို့ကဒီရှိသည်သောသူတို့ကိုအကြောင်းကို aura "က၎င်း၏လွယ်ကူသော oh, သင်ပြုရန်ရှိသည်အားလုံး .... သည်" ဖြစ်ပါတယ်။

ငါ့ကျောတံခါးကိုအပေါ်ရော်ဘာတံဆိပ်ကိုပြီးခဲ့သည့်သီတင်းပတ်အတွင်းပယ်သို့ရောက်လာသောကြောင့်ငါကအာမခံဆဲဖြစ်ပါတယ်ကြောင့်တပ်ဆင်သောကုမ္ပဏီကိုခေါ်မယ့်အနှစ်စုံတွဲတစ်တွဲအဟောင်းများကိုဖြစ်သကဲ့သို့။

ဖုန်းပေါ်တွင်အမြိုးသမီး "သင်တို့ကိုငါအသစ်တခုတံဆိပျကိုထုတ်လွှတ်လိုက်မည်ပါ ok ဖြစ်ပါတယ်" ဟုပြောသည်။

ငါ "အိုးငါကကိုယ့်ကိုယ်ကို fit ရန်ရှိသည်သလဲ? ငါပွုနိုငျကွောငျးတစ်ခုခုရှိ၏" ဟုပြောသည်။

အဆိုပါတုံ့ပြန်မှု "သင်ပြုရန်ရှိသည်ရှိသမျှတို့, တံခါးကိုချွတ်တံဆိပ်ခတ် fit နှင့်နောက်ကျောအပေါ်တံခါးကိုထားသည်သင်သည်တတ်နိုင်သေချာတာပေါ့" ဖြစ်ခဲ့သည်။

ငါသညျယခုလက်ငင်းထင် "woah, အဲဒီမှာနည်းနည်းနောက်ပြန်သွားပါ။ တံခါးကိုချွတ်?!?" ။ ငါတံခါးကိုဖယ်ရှားမယ့်တံဆိပ်ကို fit နှင့်တံခါးကို refit မှအရည်အချင်းပြည့်မရဖြစ်၏။ ငါကျွမ်းကျင်သူများကိုစွန့်ခွာ။

ဤစာအုပ်နှင့်အတူ, သင်တို့ကိုငါကအသုံးဝငျတှေ့ရလိမ့်မယ်မတိုင်မီသင်သည်အခြားစာအုပ်နှင့် Makefiles ရေးသားခြင်းအတွေ့အကြုံအချို့ငွေပမာဏကိုလိုအပျကွောငျးခံစားရသည်။

ငါအရိပ်အမြွက်, အကြံပေးချက်များနှင့်အသိပညာပေးတချို့လူတွေက "အိုး, ဒါကြောင်းကိုမအဘယ်ကြောင့်ဖြစ်ပါတယ်" ဟုပြောသို့မဟုတ် "ငါသည်သင်တို့ကြောင့်လမ်းမတတျနိုငျကွောငျးကိုနားလည်သဘောပေါက်ကြဘူး" ကူညီမယ်လို့ထင်ပါတယ်။

အကြှနျုပျ၏အကဲဖြတ်သင်ရှင်းလင်းချက်ရှာကြံသို့မဟုတ်အဆင့်မြင့်အသိပညာပိုပြီးအလယ်အလတ်နေကြသည်လျှင်သင် Make ကို GNU ပေါ်မှာဤစာအုပ်ဝယ်ဖို့သင့်ကြောင်းထို့ကွောငျ့ဖွစျပါသညျဒါပေမယ့်အရင်ကဆိုရင်များအတွက်စာအုပ်မဟုတ်ပါဘူး။