Agbọye Go Compiler: The Linker
Agbọye Go Compiler: The Linker Itupalẹ okeerẹ ti oye nfunni ni idanwo alaye ti awọn paati pataki rẹ ati awọn ilolu to gbooro. Awọn agbegbe pataki ti Idojukọ Ifọrọwọrọ naa da lori: Awọn ilana mojuto ati pro ...
Mewayz Team
Editorial Team
Oye Go Compiler: The Linker
Asopọmọra Go jẹ ipele ikẹhin ti Go akopo irinṣẹ irinṣẹ, lodidi fun apapọ awọn faili ohun ti a ṣajọpọ sinu alakomeji iṣẹ ṣiṣe kan. O ṣe ipinnu awọn itọkasi aami, ṣe iyasọtọ awọn adirẹsi iranti, ati ṣe agbejade eto ti o wa ninu ti ara ẹni ti ẹrọ ṣiṣe le gbejade ati ṣiṣe laisi awọn igbẹkẹle ita.
Fun awọn ẹgbẹ imọ-ẹrọ ti n kọ awọn ọna ṣiṣe iṣelọpọ — pẹlu awọn amayederun lẹhin awọn iru ẹrọ bii Mewayz ati OS iṣowo-module rẹ 207 — agbọye ohun ti o ṣẹlẹ ni ipele ọna asopọ jẹ pataki si kikọ iṣẹ ṣiṣe, sọfitiwia imuṣiṣẹ.
Kini Go Linker Ṣe Gangan?
Ninu ohun elo irinṣẹ Go, akopọ n ṣẹlẹ ni awọn ipele pataki meji. Ni akọkọ, olupilẹṣẹ (gc) tumọ awọn faili orisun Go sinu awọn faili ohun-itumọ-itumọ. Lẹhinna ọna asopọ (cmd/link) gba awọn faili ohun naa ki o si da wọn pọ si imuṣiṣẹ ti pari. Lakoko ti olupilẹṣẹ n ṣakoso itupalẹ sintasi, iru iṣayẹwo, ati iran koodu, ọna asopọ n ṣakoso aaye ati iṣẹ ibatan ti apejọ eto kan.
Asopọmọra ṣe ọpọlọpọ awọn iṣẹ pataki lakoko ilana yii. O ṣe ipinnu gbogbo awọn itọkasi aami kọja awọn idii, afipamo pe gbogbo ipe iṣẹ tabi itọkasi oniyipada ti o kọja aala package kan ni asopọ si imuse gangan rẹ. O ṣe ipinnu awọn adirẹsi iranti foju si gbogbo iṣẹ ati oniyipada agbaye. O tun kọ alakomeji ikẹhin ni ọna kika ti a reti nipasẹ ẹrọ ṣiṣe ibi-afẹde - ELF fun Linux, Mach-O fun macOS, tabi PE fun Windows.
Ko dabi C tabi C++ linkers, Go linker jẹ kikọ patapata ni Go funrararẹ. Ipinnu yii, ti o pari lakoko igbiyanju bootstrap Go 1.5, fun ẹgbẹ Go ni iṣakoso ni kikun lori ilana sisopọ ati imukuro igbẹkẹle lori awọn ohun elo irinṣẹ ita fun ọpọlọpọ awọn kọ.
Bawo ni Asopọmọra Go ṣe Yato si Awọn Asopọ Ibile?
Awọn ọna asopọ aṣa ni ilolupo C/C++ — GNU lld - ṣiṣẹ lori awọn ọna kika faili ohun boṣewa bi ELF relocatables. Asopọmọra Go nlo ọna kika ohun inu tirẹ, eyiti o fun ni ni irọrun ṣugbọn tun tumọ si pe o wa ni ilolupo eda ti o ya sọtọ.
- Asopọ aimi nipasẹ aiyipada:Go ṣe agbejade awọn alakomeji ti o ni asopọ ni iṣiro ni ọpọlọpọ awọn ọran, fifi gbogbo akoko ṣiṣe ati gbogbo awọn igbẹkẹle sinu faili kan. Eyi ṣe iyatọ gidigidi pẹlu awọn eto C ti o nigbagbogbo gbarale awọn ile-ikawe pinpin ti o ni agbara.
- Ko si igbesẹ iṣaju lọtọ lọtọ: Asopọmọra Go ko nilo ipinnu aami ọtọtọ kọja ọna ti awọn ọna asopọ meji-iwọle ti aṣa ṣe. O ṣe ilana awọn idii ni ilana ti o gbẹkẹle, eyiti olupilẹṣẹ ti pinnu tẹlẹ.
- Imukuro koodu ti o ku: Asopọmọra ni ibinu yọ awọn iṣẹ ti ko de ọdọ ati awọn oniyipada kuro, eyiti o ṣe pataki nitori ile-ikawe boṣewa Go ti tobi. Laisi eyi, gbogbo alakomeji yoo gbe iwuwo ti awọn idii ti ko lo.
- Idapọ asiko ṣiṣe: Asopọmọra Go gbọdọ fi sabe asiko asiko Go - pẹlu agbowọ idoti, oluṣeto gorutine, ati koodu iṣakoso akopọ — sinu gbogbo alakomeji. Eyi jẹ ojuṣe ti ko ni afiwe taara ni C sisopọ.
- Cgo bridge: Nigbati CGo ba ṣiṣẹ, olusopọ Go gbọdọ ṣajọpọ pẹlu ọna asopọ C ti eto lati mu awọn faili ohun Go/C ti o dapọ, fifi idiju pupọ kun ilana naa.
Ìjìnlẹ̀ Bọtini: Ìmọ̀ ọgbọ́n ẹ̀wẹ́ ọ̀nà Go linker ṣe àkọ́kọ́ ní ìrọ̀rùn ìmúṣiṣẹ́ ju kíkọ́ iyara. Nipa ṣiṣejade awọn alakomeji aimi ni kikun pẹlu akoko asiko ti a fi sii, Go yọkuro gbogbo ẹka ti awọn ọran iṣelọpọ - sonu awọn ile-ikawe pinpin, awọn ija ẹya, ati ipinnu igbẹkẹle asiko-ni idiyele awọn akoko ọna asopọ gigun ati awọn alakomeji nla.
Kini idi ti Iṣe Asopọmọra Ti jẹ Ipenija Titẹpẹlẹ?
Fun awọn ọdun, ọna asopọ Go jẹ ọkan ninu awọn apakan ti o lọra julọ ti ilana kikọ. Nitoripe o nṣiṣẹ lori gbogbo eto ni ẹẹkan kuku ju awọn idii ẹni kọọkan, ko le ṣe afiwe ni ọna ti akopọ le ṣe. Ẹgbẹ Go ti ṣe idoko-owo lọpọlọpọ ni awọn ilọsiwaju ọna asopọ, ni pataki ni Go 1.15 ati 1.16, eyiti o ṣafihan ọna kika faili ohun tuntun ati idinku lilo iranti asopọ asopọ nipasẹ isunmọ 30%.
💡 DID YOU KNOW?
Mewayz replaces 8+ business tools in one platform
CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.
Start Free →Ipenija ipilẹ ni pe alasopọ gbọdọ ṣe awọn iṣẹ ṣiṣe gbogbo-eto. O nilo wiwo agbaye ti gbogbo aami, gbogbo gbigbe, ati gbogbo iru alapejuwe ninu eto naa. Fun awọn koodu koodu nla - iru ti awọn iru ẹrọ ile-iṣẹ agbara ti n ṣiṣẹ awọn olumulo 138,000 + - eyi tumọ si ọna asopọ ọna asopọ awọn miliọnu awọn aami ni iwe-iwọle kan.
Awọn ilọsiwaju aipẹ ti dojukọ lori yiyi iṣẹ pada lati ọna asopọ pada sinu olupilẹṣẹ. Nipa nini olupilẹṣẹ gbejade awọn faili ohun pipe diẹ sii pẹlu awọn iṣipopada ti a ti yan tẹlẹ, ọna asopọ le ṣe iṣẹ diẹ sii ni akoko ọna asopọ. Eyi jẹ itankalẹ ayaworan ti nlọ lọwọ laarin ẹrọ irinṣẹ Go.
Ipa wo ni Asopọmọra Ṣere ni Aabo Alakomeji Go?
Asopọmọra naa tun ṣe iduro fun ọpọlọpọ awọn ẹya ti o ni ibatan aabo ni awọn alakomeji Go. O ṣeto awọn igbanilaaye ṣiṣe lori awọn apakan iranti, ni idaniloju pe awọn apakan data ko ṣiṣẹ ati awọn apakan koodu kii ṣe kikọ. Lori awọn iru ẹrọ ti o ni atilẹyin, o mu ASLR ṣiṣẹ (Adirẹsi Space Layout Randomization) nipa ṣiṣe awọn adaṣe ti o ni ominira ipo.
Bibẹrẹ pẹlu Go 1.17, ọna asopọ naa tun ṣe atilẹyin ti ipilẹṣẹ awọn alakomeji pẹlu alaye yokokoro DWARF to dara ati kọ metadata, eyiti o ṣe iranlọwọ ni ọlọjẹ ailagbara ati ijẹrisi pq ipese sọfitiwia. Awọn asia-buildid, ti a ṣe ilana ni akoko ọna asopọ, fi idamọ ara oto sinu gbogbo alakomeji fun ijẹrisi kikọ ti o ṣee ṣe.
Awọn ibeere Nigbagbogbo
Ṣe o le lo ọna asopọ ita pẹlu Go?
Bẹẹni. Nigbati CGo ba ṣiṣẹ tabi nigba ti o ba kọja -linkmode=ita si Go Toolchain, o ṣe aṣoju igbesẹ isopo ikẹhin si ọna asopọ eto (ni deede gcctabi clang). Eyi nilo nigbati eto rẹ ba sopọ si awọn ile-ikawe C ati pe o jẹ ihuwasi aiyipada lori awọn iru ẹrọ kan. Asopọmọra inu, eyiti o nlo ọna asopọ Go tirẹ ni iyasọtọ, yiyara ati ṣe agbejade awọn itumọ ti o rọrun ṣugbọn ko le mu awọn igbẹkẹle C mu.
Kini idi ti Go alakomeji tobi pupọ ju C binaries lọ?
Asopọmọra Go n fi gbogbo akoko ṣiṣe Go sinu gbogbo alakomeji, pẹlu ikojọpọ idoti, oluṣeto gorutine, netpoller, ati alaye iru irisi. Paapaa eto “Hello, World” ti o kere ju pẹlu akoko asiko ṣiṣe yii, ti o yọrisi awọn alakomeji ti o bẹrẹ ni ayika 1-2 MB. Imukuro koodu ti o ku ti ọna asopọ dinku eyi ni pataki lati ohun ti o le jẹ, ṣugbọn ilẹ akoko asiko ko ṣee ṣe. Lilo -ldflags="-s -w" yọ alaye yokokoro ati pe o le dinku iwọn alakomeji nipasẹ 20-30%.
Bawo ni Go linker ṣe mu awọn akopọ pupọ pẹlu orukọ aami kanna?
Go nlo awọn orukọ aami ti o ni kikun ti o pẹlu ọna agbewọle pipe ti package. Iṣẹ kan
Kọ Dara pẹlu Awọn irinṣẹ Ọtun
Ni oye awọn ẹrọ ẹrọ ohun elo ipele kekere bi Go linker n fun awọn ẹgbẹ imọ-ẹrọ ni eti wiwọn nigbati o ṣe iwadii awọn ọran kikọ, iṣapeye awọn opo gigun ti CI, ati sọfitiwia igbẹkẹle gbigbe. Ilana kan naa kan si ṣiṣiṣẹ iṣowo kan - diẹ sii ti o loye ohun elo irinṣẹ iṣẹ rẹ, diẹ sii ni o ṣiṣẹ daradara.
Mewayzn fun ọ ni awọn modulu iṣọpọ 207 lati ṣakoso gbogbo iṣowo rẹ - lati iṣakoso iṣẹ akanṣe ati CRM si risiti ati ifowosowopo ẹgbẹ - bẹrẹ ni $ 19 / mo. Darapọ mọ awọn olumulo 138,000+ ti o ti ṣe ṣiṣan ṣiṣan iṣẹ wọn. Bẹrẹ pẹlu Mewayz loni.
We use cookies to improve your experience and analyze site traffic. Cookie Policy