Komanda Linux / Unix: Id

NAME

ld - Duke përdorur LD , lidhësin GNU

PËRMBLEDHJE

ld [ opsione ] objfile ...

PËRSHKRIM

ld kombinon një numër të objekteve dhe dosjeve të arkivit, zhvendos të dhënat e tyre dhe lidhjet me referenca simbolike. Zakonisht hapi i fundit në përpilimin e një programi është të ekzekutojë ld .

ld pranon skedarët e gjuhëve të komandës së linkerit të shkruara në një superset të sintaksës së gjuhës së komandës së Link Editor të AT & T, për të siguruar kontroll të plotë dhe të plotë mbi procesin e lidhjes.

Kjo faqe e njeriut nuk përshkruan gjuhën e komandës; shihni hyrjen ld në "info", ose manualin ld: linkeri GNU , për detaje të plota në gjuhën e komandës dhe në aspekte të tjera të lidhësit GNU.

Ky version i ld përdor bibliotekat BFD me qëllim të përgjithshëm për të vepruar në skedarët e objekteve. Kjo lejon ld të lexojë, kombinojë dhe shkruajë skedarë të objekteve në shumë formate të ndryshme --- për shembull, COFF ose "a.out". Formatet e ndryshme mund të lidhen së bashku për të prodhuar çdo lloj skedari objektesh në dispozicion.

Përveç fleksibilitetit të saj, lidhësi GNU është më i dobishëm se lidhësit e tjerë në sigurimin e informacionit diagnostik. Shumë linkerë braktisin ekzekutimin menjëherë pas ndeshjes me një gabim; kurdo që të jetë e mundur, ld vazhdon të ekzekutohet, duke ju lejuar të identifikoni gabime të tjera (ose, në disa raste, të merrni një skedar të prodhimit përkundër gabimit).

GNU linker ld ka për qëllim të mbulojë një gamë të gjerë situatash dhe të jetë sa më e pajtueshme me lidhësit e tjerë. Si rezultat, ju keni shumë zgjedhje për të kontrolluar sjelljen e tij.

OPSIONE

Lidhësi mbështet një bollëk të opsioneve të linjës së komandës , por në praktikën praktike pak prej tyre përdoren në çdo kontekst të veçantë. Për shembull, një përdorim i shpeshtë i ld është lidhja e skedarëve standard të Unix në një sistem Unix të standardizuar. Në një sistem të tillë, për të lidhur një skedar "hello.o":

ld -o /lib/crt0.o hello.o-lc

Kjo tregon ld për të prodhuar një file të quajtur output si rezultat i lidhjes së file "/lib/crt0.o" me "hello.o" dhe bibliotekën "libc.a", e cila do të vijë nga drejtoritë e kërkimit standard. (Shih diskutimin e opsionit -l më poshtë.)

Disa nga opsionet e linjëskomandës për ld mund të specifikohen në çdo pikë të vijës së komandës. Megjithatë, opsionet që i referohen skedarëve, të tilla si -l ose -T , shkaktojnë që skedari të lexohet në pikën në të cilën opsioni shfaqet në rreshtin komandues, në lidhje me skedarët e objektit dhe opsionet e tjera të skedarit. Përsëritja e opsioneve jo të skedarit me një argument të ndryshëm ose nuk do të ketë efekt të mëtejshëm, ose mbizotëron dukuritë e mëparshme (ato më tej në të majtë në rreshtin e komandës) të asaj opsioni. Opsionet të cilat mund të përcaktohen me kuptim më shumë se një herë janë shënuar në përshkrimet më poshtë.

Argumentet jo-opsionale janë skedarë objektesh ose arkiva të cilat duhet të lidhen së bashku. Ata mund të ndjekin, paraprijnë ose të përzihen me opsione të linjës së komandës, përveç se një argument i skedarit të objektit nuk mund të vendoset midis një opsioni dhe argumentit të tij.

Zakonisht linkeri thirret me të paktën një skedar objekti, por ju mund të specifikoni forma të tjera të skedarëve të hyrjes binare duke përdorur -l , -R dhe gjuhën e komandës së shkrimit. Nëse nuk specifikohen skedarë të dhëna binare, lidhësi nuk prodhon asnjë rezultat dhe lëshon mesazhin Nuk ka skedarë hyrjeje .

Nëse linkeri nuk mund ta njohë formatin e një skedari objekti, ai do të supozojë se është një skriptë lidhësish. Një skript i specifikuar në këtë mënyrë shton skriptin kryesor të lidhësit që përdoret për lidhjen (ose skriptin e lidhjes së parazgjedhur ose atë të specifikuar duke përdorur -T ). Ky funksion lejon lidhësin të lidhet me një skedar që duket të jetë një objekt ose një arkiv, por thjesht përcakton disa vlera simbolike ose përdor "INPUT" ose "GROUP" për të ngarkuar objekte të tjera. Vini re se specifikimi i një skriptimi në këtë mënyrë thjesht shton skriptin kryesor të linkerit; përdorni opsionin -T për të zëvendësuar skriptin e parazgjedhur të linkerit tërësisht.

Për opsionet emrat e të cilëve janë një letër e vetme, argumentet e opsioneve duhet të ndjekin letrën e opsioneve pa ndërhyrë në hapësirën e hapësirës ose të jepen si argumente të ndara menjëherë pas opsionit që kërkon ato.

Për opsionet emrat e të cilëve janë letra të shumëfishta, ose një dash ose dy mund të paraprijnë emrin e opsionit; për shembull, -trace-simbol dhe -trace-symbol janë ekuivalente. Shënim - ekziston një përjashtim nga ky rregull. Opsionet e shumta të letrës që fillojnë me një 'o' të vogël mund të paraprihen vetëm me dy pikat. Kjo është për të zvogëluar konfuzionin me opsionin -o . Pra, për shembull -omagic vendos emrin e skedarit të prodhimit në magji ndërsa --omagic përcakton flamurin NMAGIC në dalje.

Argumentet për opsionet me shumë letra duhet ose të ndahen nga emri i opsioneve me anë të një shenje të barabartë, ose të jepen si argumente të veçanta menjëherë pas opsionit që i kërkon ato. Për shembull, --trace-symbol foo dhe --trace-symbol = foo janë ekuivalente. Shkurtesat unike të emrave të opsioneve me shumë letra pranohen.

Shënim - nëse linkeri thirret në mënyrë indirekte, nëpërmjet një shoferi përpilues (p.sh. gcc ), atëherë të gjitha opsionet e linjës së komandës së linkerit duhet të paraprihen nga -Wl (ose çfarëdo që është e përshtatshme për shoferin e përpiluesit të veçantë) si kjo:

gcc -Wl, - startgroup foo.o bar.o -Wl, - fundgroup

Kjo është e rëndësishme, sepse përndryshe programi i përpiluesit të programuesit mund të heqë në heshtje opsionet e lidhësit, duke rezultuar në një lidhje të keqe.

Këtu është një tabelë e çelsave të komandës gjenerike të pranuara nga lidhësi GNU:

-a fjalen

Ky opsion është i mbështetur për përputhshmërinë HP / UX. Argumenti i fjalës duhet të jetë një nga arkivat e vargjeve , të ndara ose të paracaktuar . - Arkivi është funksionalisht ekuivalent me -Bstatic , dhe dy fjalë kyçe të tjera janë funksionalisht ekuivalente me -Bdynamic . Ky opsion mund të përdoret çdo numër herë.

- Arkitekturë

- arkitekturë = arkitekturë

Në lirimin aktual të ld , ky opsion është i dobishëm vetëm për familjen e arkitekturave Intel 960. Në atë konfigurim ld , arkitektura identifikon arkitekturën e veçantë në familjen 960, duke mundësuar disa masa mbrojtëse dhe modifikimin e rrugës së kërkimit të arkivit-bibliotekës.

Shkarkimet e ardhshme të ld mund të mbështesin funksionalitetin e ngjashëm për familjet e arkitekturës.

-b input-format

--format = input-format

ld mund të konfigurohet për të mbështetur më shumë se një lloj skedari objekti. Nëse ld juaj është konfiguruar në këtë mënyrë, ju mund të përdorni opsionin -b për të specifikuar formatin binar për skedarët e objekteve të dhëna që ndjekin këtë opsion në rreshtin e komandave. Edhe kur ld është konfiguruar për të mbështetur formate alternative të objektit, zakonisht nuk ju nevojitet të specifikoni këtë, pasi ld duhet të konfigurohet që të presë si format të hyrjes së parazgjedhur formatin më të zakonshëm në çdo makinë. formati i hyrjes është një varg tekstësh, emri i një formati të caktuar të mbështetur nga bibliotekat BFD. (Ju mund të listoni formatet binare në dispozicion me objdump -i .)

Ju mund të dëshironi të përdorni këtë opsion nëse jeni duke lidhur skedarët me një format binar të pazakontë. Gjithashtu mund të përdorni -b për të kaluar formatet në mënyrë eksplicite (kur lidhni skedarë të objekteve të formave të ndryshme), duke përfshirë -b formatin e hyrjes përpara çdo grupi të skedarëve të objekteve në një format të caktuar.

Formati i parazgjedhur merret nga variablën e mjedisit "GNUTARGET".

Gjithashtu mund të përcaktoni formatin e hyrjes nga një skript, duke përdorur komandën "TARGET";

-c MRI-commandfile

--mri-script = MRI-commandfile

Për pajtueshmërinë me linkerët e prodhuar nga MRI, ld pranon skedarë të shkrimit të shkruar në një gjuhë komandimi të alternuar, të kufizuar, të përshkruar në seksionin e skedarëve të skripteve të pajtueshme MRI të dokumentacionit GNU ld. Prezantoni skedarët e shkrimit MRI me opsionin -c ; përdorni opsionin -T për të drejtuar skriptat linker të shkruar në gjuhë të shkruar me qëllim të përgjithshëm ld . Nëse MRI-cmdfile nuk ekziston, ld duket për atë në drejtoritë e specifikuara nga ndonjë opsion -L .

-d

-dc

-dp

Këto tri opsione janë ekuivalente; format e shumëfishta mbështeten për përputhshmëri me lidhësit e tjerë. Ata i caktojnë hapësirë ​​simboleve të përbashkëta edhe nëse një skedar i prodhimit i rikthyeshëm është specifikuar (me -r ). Komanda e shkrimit "FORCE_COMMON_ALLOCATION" ka të njëjtin efekt.

-e hyrje

- hyrje = hyrje

Përdorni hyrjen si simbol të qartë për ekzekutimin fillestar të programit tuaj, në vend se pika hyrëse e parazgjedhur. Nëse nuk ka simbol me emërtim të shënuar , lidhësi do të përpiqet të analizojë hyrjen si një numër dhe ta përdorë atë si adresë hyrëse (numri do të interpretohet në bazën 10, ju mund të përdorni një 0x kryesor për bazën 16 ose një udhëheqës 0 për bazën 8).

-E

--export-dinamik

Kur krijoni një ekzekutues të lidhur në mënyrë dinamike, shtoni të gjitha simbolet në tabelën dinamike të simboleve. Tabela e simbolit dinamik është grupi i simboleve që janë të dukshme nga objektet dinamike në kohën e ekzekutimit.

Nëse nuk e përdorni këtë opsion, tabela simbolike dinamike normalisht do të përmbajë vetëm ato simbole që referohen nga ndonjë objekt dinamik i përmendur në link.

Nëse përdorni "dlopen" për të ngarkuar një objekt dinamik i cili duhet t'i referohet simboleve të përcaktuara nga programi, në vend të ndonjë objekti tjetër dinamik, atëherë ndoshta do të duhet ta përdorni këtë opsion kur lidhni vetë programin.

Gjithashtu mund të përdorni skriptin e versionit për të kontrolluar se cilat simbole duhet të shtohen në tabelën dinamike të simbolit nëse formati i prodhimit e mbështet atë. Shih përshkrimin e --version-script në @ ref {VERSION}.

-EB

Lidhni objekte të mëdha-endian. Kjo ndikon në formatin e daljes së parazgjedhur.

-el

Lidhni objekte pak endian. Kjo ndikon në formatin e daljes së parazgjedhur.

-f

- emër adekuat

Kur krijoni një objekt të përbashkët ELF, vendosni fushën e brendshme DT_AUXILIARY në emrin e specifikuar. Kjo tregon lidhjen dinamike që tabela simbol i objektit të përbashkët duhet të përdoret si një filtër ndihmës në tabelën e simbolit të emrit të përbashkët të objektit.

Nëse më vonë lidhni një program me këtë objekt filtri, atëherë, kur të programoni programin, linkeri dinamik do të shohë fushën DT_AUXILIARY. Nëse lidhësi dinamik zgjidh çdo simbol nga objekti i filtrit, së pari do të kontrollojë nëse ekziston një përkufizim në emrin e përbashkët të objektit. Nëse ka një, do të përdoret në vend të përkufizimit në objektin e filtrit. Emri i përbashkët i objektit nuk duhet të ekzistojë. Kështu, emri i objektit të përbashkët mund të përdoret për të siguruar një zbatim alternativ të funksioneve të caktuara, ndoshta për debugging ose për performancën specifike makine.

Ky opsion mund të specifikohet më shumë se një herë. Hyrjet DT_AUXILIARY do të krijohen në rendin në të cilin ato shfaqen në rreshtin e komandave.

-F emri

- emrin e filtrit

Kur krijoni një objekt të përbashkët ELF, vendosni fushën e brendshme DT_FILTER në emrin e specifikuar. Kjo tregon lidhjen dinamike se tabela simbol i objektit të përbashkët që po krijohet duhet të përdoret si një filtër në tabelën e simbolit të emrit të përbashkët të objektit.

Nëse më vonë lidhni një program me këtë objekt filtri, atëherë, kur të programoni, lidhësi dinamik do të shohë fushën DT_FILTER. Lidhësi dinamik do të zgjidhë simbolet sipas tabelës së simbolit të objektit të filtrit si zakonisht, por në të vërtetë do të lidhet me përkufizimet e gjetura në emrin e përbashkët të objektit. Kështu, objekti i filtrit mund të përdoret për të përzgjedhur një mesin e simboleve të dhënë nga emri i objektit.

Disa linkerë të vjetër përdorën opsionin -F gjatë një toolchain të përpilimit për specifikimin e formatit të skedarit të objektit për të dy skedarët e objekteve të hyrjes dhe të rezultateve. Lidhësi GNU përdor mekanizma të tjerë për këtë qëllim: opsionet -b , --format , --oformat , komanda "TARGET" në skriptet lidhëse dhe ndryshorja mjedisore "GNUTARGET". Lidhësi GNU do të injorojë opsionin -F kur nuk krijon një objekt të përbashkët ELF.

-fini name

Kur krijoni një objekt të ekzekutueshëm ose të përbashkët të ELF, thirrni NAME kur sendi i ekzekutueshëm ose i përbashkët është shkarkuar, duke vendosur DT_FINI në adresën e funksionit. By default, linkeri përdor "_fini" si funksionin për të thirrur.

-G

Injorohen. Ofrohet për pajtueshmëri me mjete të tjera.

-G vlera

--gpsize = vlera

Vendosni madhësinë maksimale të objekteve që duhet të optimizohen duke përdorur regjistrin GP të madhësisë . Kjo është vetëm kuptimplotë për formatet e skedarëve të objekteve siç është MIPS ECOFF që mbështet vendosjen e objekteve të mëdha dhe të vogla në seksione të ndryshme. Kjo injorohet për formate të tjera të skedarëve të objekteve.

-h emrin

-soname = name

Kur krijoni një objekt të përbashkët ELF, vendosni fushën e brendshme DT_SONAME në emrin e specifikuar. Kur një ekzekutues është i lidhur me një objekt të përbashkët që ka një fushë DT_SONAME, atëherë kur ekzekutuesi ekzekutohet, linkeri dinamik do të përpiqet të ngarkojë objektin e përbashkët të përcaktuar nga fusha DT_SONAME në vend se të përdorë emrin e skedarit të dhënë në lidhësin.

-i

Kryeni një lidhje në rritje (njëjtë si opsioni -r ).

-në emër

Kur krijohet një objekt i ekzekutueshëm ose i përbashkët i ELF, thirrni NAME kur objekti ekzekutues ose i përbashkët është ngarkuar, duke vendosur DT_INIT në adresën e funksionit. By default, linkeri përdor "_init" si funksionin për të thirrur.

-l arkiv

--library = arkiv

Shtoni arkivin e arkivave në listën e skedarëve për t'u lidhur. Ky opsion mund të përdoret çdo numër herë. ld do të kërkojë listën e saj të rrugës për shfaqjet e "libarchive.a" për çdo arkiv të specifikuar.

Për sistemet që mbështesin bibliotekat e përbashkëta, ld gjithashtu mund të kërkojë për biblioteka me shtesa të tjera përveç ".a". Në mënyrë të veçantë, në sistemet ELF dhe SunOS, ld do të kërkojë një direktori për një bibliotekë me një shtrirje ".so" përpara se të kërkoni një me një shtrirje të ".a". Sipas konventës, një shtrirje ".so" tregon një bibliotekë të përbashkët.

Lidhësi do të kërkojë një arkiv vetëm një herë, në vendin ku është specifikuar në rreshtin e komandave. Nëse arkivi përcakton një simbol i cili ishte i padefinuar në ndonjë objekt që shfaqet para arkivit në rreshtin e komandës, linkeri do të përfshijë skedarët përkatës nga arkivi. Megjithatë, një simbol i pacaktuar në një objekt që shfaqet më vonë në rreshtin e komandimit nuk do të bëjë që lidhësi të kërkojë sërish arkivin.

Shihni - ( opsionin për një mënyrë për të detyruar lidhësin për të kërkuar arkivat disa herë.

Ju mund të listoni të njëjtin arkiv shumë herë në rreshtin e komandës.

Ky lloj kërkimi arkivor është standard për lidhësit Unix. Megjithatë, nëse përdorni ld onAIX, vini re se është ndryshe nga sjellja e lidhësit AIX.

-L searchdir

--japi i librave = searchdir

Shtoni searchdir path në listën e shtigjeve që ld do të kërkojë për bibliotekat arkivore dhe skriptet e kontrollit ld . Ju mund ta përdorni këtë opsion çdo numër herë. Drejtoritë kontrollohen në rendin në të cilin ato janë të specifikuara në rreshtin e komandave. Drejtoritë e specifikuara në rreshtin e komandës kontrollohen para drejtorive të paracaktuara. Të gjitha opsionet L aplikohen për të gjitha opsionet -l , pavarësisht nga rendi në të cilin shfaqen opsionet.

Nëse searchdir fillon me "=", atëherë "=" do të zëvendësohet me prefiksin sysroot , një rrugë e specifikuar kur lidhësi është konfiguruar.

Grupi i parazgjedhur i shtigjeve të kërkuara (pa u specifikuar me -L ) varet nga mënyra e emulimit ld që po përdor, dhe në disa raste edhe në mënyrën se si është konfiguruar.

Shtigjet gjithashtu mund të specifikohen në një skript linku me komandën "SEARCH_DIR". Direktivat e specifikuara në këtë mënyrë kontrollohen në pikën në të cilën skriptuesi i linkerit shfaqet në rreshtin e komandave.

-m emulim

Përshto lidhësin e emulacionit . Ju mund të listoni emulatimet në dispozicion me opsionet --verbose ose -V .

Nëse opsioni -m nuk përdoret, emulimi merret nga variabli mjedisor "LDEMULATION", nëse përcaktohet.

Përndryshe, emulimi i parazgjedhur varet nga mënyra e konfigurimit të linkerit.

-M

--print-hartë

Shtypni një hartë lidhje me prodhimin standard. Një hartë lidhje jep informacion në lidhje me lidhjen, përfshirë këtu:

*

Ku skedarët e objekteve dhe simbolet janë të mapuara në kujtesë.

*

Si ndahen simbolet e zakonshme.

*

Të gjithë anëtarët e arkivit të përfshirë në link, me një përmendje të simbolit që shkaktoi që anëtari arkivor të futet.

-N

--nmagic

Turn off alignment faqe e seksioneve, dhe të shënojë dalje si "NMAGIC" nëse është e mundur.

-N

--omagic

Vendosni që tekstet dhe seksionet e të dhënave të jenë të lexueshme dhe të shkruajtshme. Gjithashtu, mos e ndizni faqen e segmentit të të dhënave dhe mos e lidhni lidhjen me bibliotekat e përbashkëta. Nëse formati i prodhimit mbështet numrat magjikë të stilit Unix, shënoni daljen si "OMAGIC".

--no-omagic

Ky opsion mohon shumicën e efekteve të opsionit -N . Vendos seksionin e tekstit për të lexuar vetëm, dhe detyron segmentin e të dhënave që të jetë në linjë me faqe. Shënim - ky opsion nuk lejon lidhjen me bibliotekat e përbashkëta. Përdorni -Bdynamic për këtë.

-o output

- output = dalje

Përdorni prodhimin si emër për programin e prodhuar nga ld ; nëse ky opsion nuk është i specifikuar, emri a.out përdoret sipas parazgjedhjes. Komanda e skriptit "OUTPUT" gjithashtu mund të specifikojë emrin e skedarit të prodhimit.

-O niveli

Nëse niveli është një vlerë numerike më e madhe se zero ld optimizon daljen. Kjo mund të zgjasë dukshëm dhe prandaj ndoshta duhet të aktivizohet vetëm për binarin përfundimtar.

Q

--emit-relocs

Dërgo seksionet e zhvendosjes dhe përmbajtjet në eksekste të lidhura plotësisht. Analiza e lidhjes së postës dhe mjetet e optimizimit mund të kenë nevojë për këtë informacion për të kryer modifikime të sakta të ekzekutuesve. Kjo rezulton në ekzekutues më të mëdhenj.

Ky opsion momentalisht mbështetet vetëm në platformat ELF.

-r

--relocateable

Genero output relocatable --- dmth, të gjenerojë një skedar output që mund të shërbejë si input për ld . Kjo shpesh quhet lidhja e pjesshme . Si një efekt anësor, në mjediset që mbështesin numrat magjikë standard Unix, ky opsion gjithashtu përcakton numrin magjik të skedarit të prodhimit në "OMAGIC". Nëse ky opsion nuk është i specifikuar, prodhohet një skedar absolut. Kur lidh programet C + +, ky opsion nuk do të zgjidhë referencat ndaj ndërtuesve; për ta bërë këtë, përdorni -Ur .

Kur një skedar i hyrjes nuk ka format të njëjtë si skedari i prodhimit, lidhja e pjesshme mbështetet vetëm nëse skedari i hyrjes nuk përmban zhvendosje. Formatet e ndryshme të prodhimit mund të kenë kufizime të mëtejshme; për shembull disa formate të bazuara në "a.out" nuk mbështesin lidhjen e pjesshme me skedarët e futjes në formate të tjera në të gjitha.

Ky opsion bën të njëjtën gjë si -i .

-R emri i skedarit

--just-symbols = emri i skedarit

Lexoni emrat e simboleve dhe adresat e tyre nga emri i skedarit , por mos e zhvendosni ose mos e përfshini atë në dalje. Kjo lejon që skedari juaj i prodhimit të referohet simbolikisht në vende absolute të kujtesës të përcaktuar në programe të tjera. Mund ta përdorni këtë mundësi më shumë se një herë.

Për pajtueshmërinë me lidhësit e tjerë ELF, nëse opsioni -R është ndjekur nga një emër i direktorisë, në vend se një emër i skedarit, ai trajtohet si opsion -rpath .

-s

--strip-gjitha

Hiqni të gjithë informacionin e simbolit nga skedari i prodhimit.

-S

--strip-debug

Hiqni informacionin e simbolit debugger (por jo të gjitha simbolet) nga skedari i prodhimit.

-T

--trace

Shtypni emrat e skedarëve të futjes si proceset e përpunimit të tyre.

-T scriptfile

--script = scriptfile

Përdor skedarin e skriptit si skriptin e linkerit . Ky dorëshkrim zëvendëson skriptin e lidhësit default ld (në vend që të shtohet në të), kështu që file komanda duhet të specifikojë gjithçka që është e nevojshme për të përshkruar skedarin e prodhimit. Nëse skedari i skedarit nuk ekziston në direktorinë e tanishme, "ld" shikon për atë në direktoritë e specifikuara nga opsionet e mësipërme. Mblidhen shumë mundësi- T .

-u simbol

- undefined = simbol

Simboli i forcës duhet të futet në skedarin e prodhimit si një simbol i padefinuar. Kjo mund të bëjë, për shembull, lidhjen e moduleve shtesë nga bibliotekat standarde. -u mund të përsëritet me argumente të opsioneve të ndryshme për të futur simbole të tjera të padefinuara. Ky opsion është i barabartë me komandën e skriptit "EXTERN".

-Ur

Për çdo gjë tjetër përveç programeve C + +, ky opsion është ekuivalent me -r : gjeneron dalje relocatable --- dmth, një skedar output që mund të shërbejë si input në ld . Kur lidh programet C + +, -Ur i zgjidh referencat për ndërtuesit, ndryshe nga -r . Nuk punon për të përdorur -Ur në skedarët që ishin të lidhura me -Ur ; pasi të jetë ndërtuar tabela e konstruktorit, nuk mund të shtohet. Përdorni -Ur vetëm për lidhjen e fundit të pjesshme, dhe -r për të tjerët.

--unique [= SEKSIONI ]

Krijon një seksion të veçantë të prodhimit për çdo seksion të hyrjes që përputhet me Seksionin , ose nëse mungon opsioni opsional i Seksionit wildcard, për çdo seksion të hyrjes në jetim. Një seksion jetim është një që nuk përmendet në mënyrë specifike në një skriptë lidhësish. Ju mund ta përdorni këtë opsion shumë herë në rreshtin e komandës; Ajo parandalon shkrirjen normale të seksioneve të hyrjes me të njëjtin emër, duke i dhënë përparësi caktimeve të seksionit të prodhimit në një skript linker.

-V

--version

-V

Shfaqni numrin e versionit për ld . Opcioni -V gjithashtu liston emulimet e mbështetura.

-X

--discard-gjitha

Fshini të gjitha simbolet lokale.

-X

--discard-vendasit

Fshini të gjitha simbolet e përkohshme lokale. Për shumicën e objektivave, kjo është e gjitha simbolet lokale emrat e të cilëve fillojnë me L.

-y simbol

--trace-symbol = simbol

Shtypni emrin e çdo skedari të lidhur në të cilën shfaqet simboli . Ky opsion mund të jepet çdo numër herë. Në shumë sisteme është e nevojshme të parashtrohet një nënvizim.

Ky opsion është i dobishëm kur ke një simbol të pacaktuar në lidhjen tënde, por nuk e di nga ku vjen referenca.

-Y rrugën

Shtoni shtegunrrugën e kërkimit të librit të parazgjedhur. Ky opsion ekziston për pajtueshmërinë e Solaris.

-z fjalen

Fjalë kyçe të njohura janë "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "tani", "origjinë", "combreloc", "nocombreloc" dhe "nocopyreloc ". Fjalë kyçe të tjera injorohen për pajtueshmërinë e Solaris. "initfirst" shënon objektin që fillimisht duhet të iniciohet në runtime para çdo objekti tjetër. "interpose" shënon objektin që tabela e simbolit të saj ndërfaqet para të gjitha simboleve, por primar ekzekutiv primar "loadfltr" shënon objektin që filtees e tij të përpunohen menjëherë në runtime "nodefaultlib" shënon objektin që kërkimi për varësi të këtij objekti do të injorojë çdo rrugë kërkimi në bibliotekë të paracaktuar. "nodelete" shënon objektin nuk duhet të shkarkohet në runtime. "nodlopen" shënon objektin që nuk është në dispozicion për "dlopen". "kokëkalim" shënon objektin nuk mund të hidhet nga "dldump". "tani" shënon objektin me lidhjen jo dembuese të runtimes. "origjina" shënon objektin mund të përmbajë $ ORIGIN. "defs" ndalon simbolet e padefinuara. "muldefs" lejon përkufizime të shumëfishta. "combreloc" kombinon seksione të shumta reloc dhe i rendit ato për të bërë kërkim dinamik të caching simbolit.

"nocombreloc" pamundëson kombinimin e seksioneve të relocimit të shumëfishta. "nocopyreloc" pamundëson prodhimin e kopjes relocs.

- ( arkivat -)

- arkivat e grupit - grupi i ardhshëm

Arkivat duhet të jenë një listë e dosjeve të arkivit . Ato mund të jenë ose emra eksplicitë skedari ose opsione -l .

Arkivat e specifikuara kontrollohen vazhdimisht derisa të krijohen referenca të reja të padefinuara. Normalisht, një arkiv kërkohet vetëm një herë në rendin që është specifikuar në rreshtin e komandave. Nëse një simbol në atë arkiv nevojitet për të zgjidhur një simbol të pacaktuar të referuar nga një objekt në një arkiv që shfaqet më vonë në rreshtin e komandës, lidhësi nuk do të ishte në gjendje ta zgjidhë atë referencë. Duke grupuar arkivat, të gjithë ata duhet të kontrollohen në mënyrë të përsëritur derisa të zgjidhen të gjitha referencat e mundshme.

Përdorimi i këtij opsioni ka një kosto të rëndësishme të performancës. Është mirë ta përdorësh atë vetëm kur ka referenca rrethore të pashmangshme ndërmjet dy ose më shumë arkivave.

--accept-panjohur-hyrje-hark

--no-pranojë-panjohur-input-arch

Tregon lidhësin për të pranuar skedarët e hyrjes, arkitektura e të cilëve nuk mund të njihet. Supozimi është se përdoruesi e di se çfarë po bëjnë dhe qëllimisht dëshiron të lidhet në këto skedarë të panjohur të hyrjes. Kjo ishte sjellja e paracaktuar e lidhësit, para se të lëshohej 2.14. Sjellja e parazgjedhur nga lëshimi 2.14 e tutje është të refuzojë skedarë të tillë të hyrjes, dhe kështu opsioni i -acceptitpranuar-pranuar-i panjohur është shtuar për të rikthyer sjelljen e vjetër.

-zgjidh fjalen

Ky opsion injorohet për përputhshmërinë SunOS .

-Bdynamic

-dy

-call_shared

Lidhje me bibliotekat dinamike. Kjo ka kuptim vetëm në platformat për të cilat mbështeten bibliotekat e përbashkëta . Ky opsion normalisht është default në platforma të tilla. Variante të ndryshme të këtij opsioni janë për pajtueshmërinë me sisteme të ndryshme. Ju mund ta përdorni këtë opsion shumë herë në rreshtin komandues: ai ndikon në kërkimin e bibliotekës për -l opsionet që e ndjekin atë.

-Bgroup

Vendosni "DF_1_GROUP" flamurin në hyrjen "DT_FLAGS_1" në seksionin dinamik. Kjo shkakton lidhësin e runtimes për të trajtuar lookups në këtë objekt dhe varësi të saj për t'u kryer vetëm brenda grupit. - nuk është e përcaktuar . Ky opsion ka kuptim vetëm në platformat ELF që mbështesin bibliotekat e përbashkëta .

-Bstatic

-dn

-non_shared

-static

Mos lidhni kundër bibliotekave të përbashkëta. Kjo ka kuptim vetëm në platformat për të cilat mbështeten bibliotekat e përbashkëta. Variante të ndryshme të këtij opsioni janë për pajtueshmërinë me sisteme të ndryshme. Ju mund ta përdorni këtë opsion shumë herë në rreshtin komandues: ai ndikon në kërkimin e bibliotekës për -l opsionet që e ndjekin atë.

-Bsymbolic

Kur krijoni një bibliotekë të përbashkët, lidhni referencat ndaj simboleve globale me definicionin brenda bibliotekës së përbashkët, nëse ka. Zakonisht, është e mundur që një program i lidhur me një bibliotekë të përbashkët të anashkalojë definicionin brenda bibliotekës së përbashkët. Ky opsion ka kuptim vetëm në platformat ELF që mbështesin bibliotekat e përbashkëta.

--check-seksione

--no-check-seksione

Kërkon që linkeri të mos kontrollojë adresat e seksionit pasi të jenë caktuar për të parë nëse ka ndonjë mbivendosje. Normalisht linkeri do të kryejë këtë kontroll, dhe nëse gjen ndonjë mbivendosje ajo do të prodhojë mesazhe të përshtatshme gabimi. Lidhësi nuk di për, dhe bën pagesa për seksionet në mbivendosje. Sjellja e paracaktuar mund të rikthehet duke përdorur kalimin e linjës së komandës - kontrolloni seksionet .

--cref

Shfaq një tabelë referimi të kryqëzuar. Nëse një skedar hartë linker është duke u gjeneruar, tabela referencë e kryqëzimit shtypet në skedarin e hartës. Përndryshe, ajo shtypet në prodhimin standard.

Formati i tabelës është qëllimisht i thjeshtë, kështu që mund të përpunohet lehtë me një dorëshkrim nëse është e nevojshme. Simbolet shtypen, renditen sipas emrit. Për çdo simbol, jepet një listë e emrave të skedarëve. Nëse simboli është përcaktuar, skedari i parë i listuar është vendndodhja e përkufizimit. Dosjet e mbetura përmbajnë referenca për simbolin.

--no-përcaktuar, i zakonshëm

Ky opsion pengon caktimin e adresave te simboleve të zakonshme. Komanda e shkrimit "INHIBIT_COMMON_ALLOCATION" ka të njëjtin efekt.

Opsioni --no-define-common lejon çkyçjen e vendimit për të caktuar adresa në simbolet e Përbashkët nga zgjedhja e llojit të skedarit të prodhimit; përndryshe forcat e tipit të daljes jo-relocatable caktojnë adresa për simbolet e Përbashkët. Përdorimi i --non-define-common lejon Simbolet e përbashkëta që janë referuar nga një bibliotekë e përbashkët për t'u caktuar adresat vetëm në programin kryesor. Kjo eliminon hapësirën e kopjuar të papërdorur në bibliotekën e përbashkët dhe gjithashtu pengon ndonjë konfuzion të mundshëm mbi zgjidhjen e kopjimit të gabuar kur ka shumë module dinamike me shtigje të specializuara të kërkimit për zgjidhjen e simbolit të runtimes.

--defsym simbol = shprehje

Krijo një simbol global në skedarin e prodhimit, që përmban adresën absolute të dhënë nga shprehja . Ju mund ta përdorni këtë opsion sa herë që është e nevojshme për të përcaktuar simbole të shumta në vijën e komandës. Një formë e kufizuar e aritmetikës mbështetet për shprehjen në këtë kontekst: ju mund të jepni një konstatim hexadecimal ose emrin e një simboli ekzistues, ose përdorni "+" dhe "-" për të shtuar ose zbritur konstante ose simbole hexadecimale. Nëse keni nevojë për shprehje më të përpunuara, merrni parasysh përdorimin e gjuhës së komandës së linkerit nga një skript. Shënim: nuk duhet të ketë hapësirë ​​të bardhë midis simbolit , shenjës së barabartë (`` = '') dhe shprehjes .

--demangle [= style ]

--no-demangle

Këto opsione kontrollojnë nëse do të demokracojnë emrat e simboleve në mesazhet e gabimeve dhe daljet e tjera. Kur lidhet linkeri për të demoluar, ai përpiqet të paraqesë emrat e simboleve në një mënyrë të lexueshme: ai heq nënvizimet kryesorë nëse ato përdoren nga formati i skedarit të objektit dhe konverton emrat e simboleve të C ++ në emra të lexueshëm të përdoruesit. Përpunuesit e ndryshëm kanë stile të ndryshme. Argumenti opsional i demangling style mund të përdoret për të zgjedhur një stil të duhur demangling për përpiluesin tuaj. Lidhësi do të prishet sipas parazgjedhjes nëse nuk është caktuar ndryshori i mjedisit COLLECT_NO_DEMANGLE . Këto opsione mund të përdoren për të anashkaluar parazgjedhjen.

--Dynamic-linker file

Vendosni emrin e lidhësit dinamik. Kjo ka kuptim vetëm kur gjeneron ekzekutues të lidhur ELF dinamikisht. Lidhësi dinamik i parazgjedhur normalisht është i saktë; mos e përdorni këtë nëse nuk e dini se çfarë po bëni.

--embedded-relocs

Ky opsion ka kuptim vetëm kur lidh kodin e PIC të ngulur në MIPS, të krijuara nga opsioni "-embruar-pic" tek përpiluesi dhe montuesi GNU. Kjo shkakton lidhësin që të krijojë një tabelë e cila mund të përdoret në runtime për të zhvendosur çdo të dhënë që është inicializuar statikisht tek vlerat e treguesit. Shihni kodin në testsuite / ld-empic për detaje.

--fatal-Paralajmërimet

Trajtoji të gjitha paralajmërimet si gabime .

--force-exe-suffix

Sigurohuni që një skedar i prodhimit ka një prapashtesë .exe.

Nëse një skedar output output plotësisht i lidhur nuk ka një prapashtesë " .exe " ose " .dll ", ky opsion detyron lidhësin të kopjojë skedarin e prodhimit në një emër të njëjtë me një prapashtesë ".exe". Ky opsion është i dobishëm kur përdorni makefile të unmodified Unix në një host të Microsoft Windows, meqë disa versione të Windows-it nuk do të kryejnë një imazh nëse nuk mbaron me një prapashtesë ".exe".

--no-GC-seksionet

--gc-seksione

Aktivizo mbledhjen e plehrave të seksioneve të hyrjes së papërdorur. Është injoruar në objektivat që nuk e mbështesin këtë opsion. Ky opsion nuk është në përputhje me -r , as nuk duhet të përdoret me lidhje dinamike. Sjellja e paracaktuar (për mos kryerjen e këtij grumbullimi të mbeturinave ) mund të rikthehet duke specifikuar - seksione jo-gc në rreshtin e komandave.

--ndihmë

Shtypni një përmbledhje të opsioneve të linjës komanduese në dalje dhe dalje standarde.

--target-ndihmë

Shtypni një përmbledhje të të gjitha opsioneve specifike të synimit në daljen dhe daljen standarde.

-Fjalë harta e hartës

Shtypni një hartë lidhje në dosjen e skedarit të skedarit . Shih përshkrimin e opcionit -M , më sipër.

--no-mbaj-kujtesës

ld normalisht optimizon për shpejtësinë e përdorimit të kujtesës duke caching tabelat e simboleve të skedarëve të hyrjes në kujtesë. Ky opsion tregon ld për të optimizuar në vend të përdorimit të kujtesës, duke lexuar tabelat e simboleve sipas nevojës. Kjo mund të kërkohet nëse ld shkon jashtë hapësirës së kujtesës duke lidhur një ekzekutues të madh.

--no-undefined

-z defs

Normalisht, kur krijoni një bibliotekë të përbashkët jo simbolike, lejohen simbolet e padefinuara dhe mbeten të zgjidhen nga ngarkuesi i runtimes. Këto opcione nuk lejojnë simbolet e tilla të padefinuara.

--allow-shumta-përkufizim

-z muldefs

Normalisht kur një simbol përcaktohet shumë herë, lidhësi do të raportojë një gabim fatal. Këto opsione lejojnë përkufizime të shumëfishta dhe do të përdoret përkufizimi i parë.

--allow-shlib-undefined

Lejo simbole të padefinuara në objekte të përbashkëta edhe kur - nuk është përcaktuar. Rezultati neto do të jetë që simbolet e padefinuara në objekte të rregullta ende do të shkaktojnë një gabim, por shenjat e padefinuara në objekte të përbashkëta do të injorohen. Zbatimi i no_undefined bën supozimin se linkeri runtime do të mbytem në simbole të padefinuara. Megjithatë ka të paktën një sistem (BeOS) ku simbolet e padefinuara në bibliotekat e përbashkëta janë normale, meqenëse kerneli i copeton ata në kohën e ngarkimit për të zgjedhur funksionin më të përshtatshëm për arkitekturën aktuale. IE zgjedh dinamikisht një funksion të përshtatshëm memset. Me sa duket është gjithashtu normale që bibliotekat e përbashkëta HPPA të kenë simbole të padefinuara.

--no-undefined-version

Normalisht kur një simbol ka një version të padefinuar, linkeri do ta injorojë atë. Ky opsion nuk lejon simbolet me version të padefinuar dhe një gabim fatal do të lëshohet në vend.

--no-paralajmërojnë-mospërputhje

Normalisht ld do të japë një gabim në qoftë se ju përpiqeni të lidhni skedarë të dhëna që nuk përputhen për ndonjë arsye, ndoshta sepse janë përpiluar për procesorë të ndryshëm ose për endiannesset e ndryshme. Ky opsion tregon ld se duhet heshtur të lejojë gabime të tilla të mundshme. Ky opsion duhet të përdoret vetëm me kujdes, në rastet kur keni ndërmarrë ndonjë veprim të veçantë që siguron që gabimet e linkerit janë të papërshtatshme.

--no-tërë-archive

Fikni efektin e opsionittërë-arkivit për skedarët e mëvonshëm të arkivit.

--noinhibit-exec

Mbajeni skedarin e ekzekutueshëm të prodhimit sa herë që është ende i përdorshëm. Normalisht, lidhësi nuk do të prodhojë një skedar të prodhimit në qoftë se has në gabime gjatë procesit të lidhjes; ajo del pa shkruar një skedar të prodhimit kur lëshon ndonjë gabim.

-nostdlib

Kërkoni vetëm drejtoritë e bibliotekave të specifikuara qartë në rreshtin e komandave. Drejtoritë e bibliotekave të specifikuara në skriptet e lidhjeve (duke përfshirë skriptat e linkerve të specifikuara në rreshtin e komandës) janë injoruar.

- format format output

ld mund të konfigurohet për të mbështetur më shumë se një lloj skedari objekti. Nëse ld juaj është konfiguruar në këtë mënyrë, ju mund të përdorni opsionin --oformat për të specifikuar formatin binar për skedarin e objektit të daljes. Edhe kur ld është konfiguruar për të mbështetur formate alternative të objektit, zakonisht nuk ju nevojitet të specifikoni këtë, pasi ld duhet të konfigurohet për të prodhuar si format output të zakonshëm formatin më të zakonshëm në secilën makine. output-format është një varg tekstësh, emri i një formati të caktuar të mbështetur nga bibliotekat BFD. (Ju mund të listoni formatet binare në dispozicion me objdump -i .) Komanda e shkrimit "OUTPUT_FORMAT" gjithashtu mund të specifikojë formatin e prodhimit, por ky opsion anashkalon atë.

-qmagic

Ky opsion injorohet për pajtueshmërinë me Linux.

-Qy

Ky opsion nuk injorohet për përputhshmërinë SVR4.

--relax

Një opsion me efekte të varura nga makina. Ky opsion mbështetet vetëm në disa objektiva.

Në disa platforma, opsioni " relax" kryen optimizime globale që bëhen të mundshme kur linkeri zgjidh adresimin në program, si modalitetet relaksuese të adresave dhe sintetizimin e udhëzimeve të reja në skedarin e objektit të prodhimit.

Në disa platforma këto optimizime globale të kohës së lidhjes mund të bëjnë të pamundur debugimin simbolik të ekzekutuesit që rezulton. Kjo njihet si rasti për familjen e procesorëve Matsushita MN10200 dhe MN10300.

Në platforma ku kjo nuk mbështetet, - relax është pranuar, por injorohet.

--niemri i skedarit-simbolet-file

Mbajini vetëm simbolet e listuara në skedarin e skedarit , duke hedhur poshtë të gjithë të tjerët. filename është thjesht një skedar i sheshtë, me një emër simboli për rresht. Ky opsion është veçanërisht i dobishëm në mjedise (siç është VxWorks) ku një tabelë e madhe simbolesh globale grumbullohet gradualisht, për të ruajtur kujtesën e kohës së lirë.

- skedari i skedarëve-simbolet nuk hidhni simbole të padefinuara, ose simbole të nevojshme për zhvendosjet.

Ju mund të specifikoni vetëm - një-simbolet-skedarë njëherë në rreshtin e komandës. Ajo anashkalon -s dhe -S .

-rpath dir

Shto një direktori në rrugën e kërkimit të bibliotekës runtime. Kjo përdoret kur lidh një ELF ekzekutues me objekte të përbashkëta. Të gjitha argumentet -rpath lidhen dhe kalojnë në lidhësin e runtimes, i cili i përdor ato për të gjetur objekte të përbashkëta në kohën e duhur. Opsioni -rpath përdoret gjithashtu edhe në gjetjen e objekteve të përbashkëta të cilat janë të nevojshme nga objektet e përbashkëta të përfshira shprehimisht në link; shih përshkrimin e opcionit -rpath-link . Nëse -rpath nuk përdoret kur lidh një ekzekutues ELF, përmbajtja e ndryshores së mjedisit "LD_RUN_PATH" do të përdoret nëse përcaktohet.

Opsioni -rpath gjithashtu mund të përdoret në SunOS. By default, në SunOS, lidhësi do të formojë një patch kërkimi runtime nga të gjitha opsionet -L që i është dhënë. Nëse përdoret një opsion -rpath , rruga e kërkimit runtime do të formohet ekskluzivisht duke përdorur opsionet -rpath , duke injoruar opsionet -L . Kjo mund të jetë e dobishme kur përdoret gcc, e cila shton shumë opsione -L që mund të jenë montuar në skedarë të skedarëve.

Për pajtueshmërinë me lidhësit e tjerë ELF, nëse opsioni -R është ndjekur nga një emër i direktorisë, në vend se një emër i skedarit, ai trajtohet si opsion -rpath .

-rpath-link DIR

Kur përdorni ELF ose SunOS, një bibliotekë e përbashkët mund të kërkojë një tjetër. Kjo ndodh kur një lidhje "ld-shared" përfshin një bibliotekë të përbashkët si një nga skedarët e hyrjes.

Kur linkeri ndesh një varësi të tillë kur bën një lidhje jo të përbashkët dhe jo të zhvendosura, automatikisht do të përpiqet të gjejë bibliotekën e kërkuar të përbashkët dhe ta përfshijë atë në link, nëse nuk përfshihet në mënyrë eksplicite. Në një rast të tillë, opsioni -rpath-link përcakton grupin e parë të drejtorive për të kërkuar. Opsioni -rpath-link mund të përcaktojë një rend të emrave të direktorisë ose duke specifikuar një listë të emrave të ndara me dy pika ose duke u shfaqur herë të shumëfishta.

Ky opsion duhet të përdoret me kujdes sepse ajo anashkalon rrugën e kërkimit që mund të jetë hartuar shumë në një bibliotekë të përbashkët. Në një rast të tillë është e mundur që të përdorësh pa dashje një rrugë tjetër kërkimi sesa do të bënte linkeri i runtimes.

Lidhësi përdor rrugët e kërkimit në vijim për të gjetur bibliotekat e kërkuara të përbashkëta.

1.

Çdo direktoritë e specifikuar nga opsionet -rpath-link .

2.

Çdo direktoritë e specifikuar nga opsionet -rpath . Dallimi midis -rpath dhe -rpath-link është që drejtoritë e specifikuara nga opsionet -rpath janë të përfshira në ekzekutues dhe përdoren në runtime, ndërsa -rpath-link opsion është i efektshëm vetëm në kohën e lidhjes. Është vetëm për linkerin amtare.

3.

Në një sistem ELF, nëse opsionet -rpath dhe "rpath-link" nuk përdoren, kërko përmbajtjen e ndryshores së mjedisit "LD_RUN_PATH". Është vetëm për linkerin amtare.

4.

Në SunOS, nëse opsioni -rpath nuk u përdor, kërko ndonjë drejtori të specifikuar duke përdorur opsionet- L .

5.

Për një linker amtare, përmbajtja e ndryshores së mjedisit "LD_LIBRARY_PATH".

6.

Për një linker vendës ELF, drejtoritë në "DT_RUNPATH" ose "DT_RPATH" të një bibliotekeje të përbashkët kërkohen për bibliotekat e përbashkëta të nevojshme nga ai. Shënimet "DT_RPATH" shpërfillen nëse ekzistojnë "DT_RUNPATH" shënimet.

7.

Drejtoritë parazgjedhore, normalisht / lib dhe / usr / lib .

8.

Për një linker amtare në një sistem ELF, nëse ekziston skedari /etc/ld.so.conf , lista e direktorive të gjetura në atë skedar.

Nëse biblioteka e përbashkët e kërkuar nuk gjendet, lidhësi do të lëshojë një paralajmërim dhe do të vazhdojë me lidhjen.

-shared

-Bshareable

Krijo një bibliotekë të përbashkët. Kjo aktualisht mbështetet vetëm në platformat ELF, XCOFF dhe SunOS. Në SunOS, lidhësi do të krijojë automatikisht një bibliotekë të përbashkët nëse opsioni -e nuk përdoret dhe ka simbole të padefinuara në link.

--sort-përbashkët

Ky opsion tregon ld për të renditur simbolet e zakonshme sipas madhësisë kur i vendos ato në seksionet përkatëse të prodhimit. Së pari vijnë të gjitha simbolet e një byte, pastaj të gjitha dy bajt, pastaj të katër bytët, dhe pastaj gjithçka tjetër. Kjo është për të parandaluar boshllëqet ndërmjet simboleve për shkak të kufizimeve të shtrirjes.

--split-by-file [ madhësia ]

Ngjashëm me --split-by-reloc por krijon një seksion të ri të prodhimit për secilën skedar të hyrjes kur arrihet madhësia . madhësia defaults në një madhësi prej 1 nëse nuk jepet.

--split-by-reloc [ count ]

Përpiqet të krijojë seksione shtesë në skedarin e prodhimit në mënyrë që asnjë seksion i vetëm i prodhimit në skedar të përmbajë më shumë se zhvendosjet e numërimit . Kjo është e dobishme kur gjeneron skedarë të madh të rivendosur për shkarkim në disa kernele në kohë reale me formatin e skedarit të objektit COFF; pasi COFFnannot përfaqëson më shumë se 65535 zhvendosje në një seksion të vetëm. Vini re se kjo nuk do të funksionojë me skedarët e objekteve të objekteve të cilat nuk mbështesin seksione arbitrare. Lidhësi nuk do të ndajë seksionet e hyrjes individuale për rishpërndarjen, kështu që nëse një seksion i vetëm i hyrjes përmban më shumë se rivendosjet e numërimit, një pjesë e prodhimit do të përmbajë shumë zhvendosje. numërimi i paracaktuar për një vlerë prej 32768.

--stats

Përpiloni dhe shfaqni statistika për funksionimin e linkerit, të tilla si koha e ekzekutimit dhe përdorimi i kujtesës.

--traditional-format

Për disa objektiva, prodhimi i ld është i ndryshëm në disa mënyra nga prodhimi i disa linker ekzistues. Ky kalim kërkon ld të përdorë formatin tradicional.

Për shembull, në SunOS, ld kombinon futjet e kopjuara në tabelën e vargut të simboleve. Kjo mund të zvogëlojë madhësinë e një skedari të prodhimit me informacion të plotë debugging me mbi 30 për qind. Për fat të keq, programi "dbx" SunOS nuk mund të lexojë programin që rezulton ("gdb" nuk ka probleme). Kalendari i formatit tradicional tregon ld të mos kombinojë hyrjet e kopjuara.

- seksion-fillimi sectionname = org

Gjeni një seksion në skedarin e prodhimit në adresën absolute të dhënë nga org . Ju mund ta përdorni këtë opsion sa herë që është e nevojshme për të gjetur seksione të shumta në rreshtin e komandave. org duhet të jetë një numër i vetëm heksadecimal; për pajtueshmëri me lidhësit e tjerë, mund të heqësh 0x kryesor që zakonisht lidhet me vlerat hexadecimal. Shënim: nuk duhet të ketë hapësirë ​​të bardhë midis seksionit , shenjës së barabartë (`` = ''), dhe org .

-Tbss org

-Tdata org

-Ttext org

Përdorni org si adresë fillestare për --- respektivisht --- segmentin "bss", "data" ose "tekst" të skedarit të prodhimit. org duhet të jetë një numër i vetëm heksadecimal; për pajtueshmëri me lidhësit e tjerë, mund të heqësh 0x kryesor që zakonisht lidhet me vlerat hexadecimal.

--dll-fjalëshumë

--verbose

Shfaqni numrin e versionit për ld dhe rendisni emulatimet e linkerit të mbështetura. Shfaqni cilat skedarë hyrje mund dhe nuk mund të hapen. Shfaq skriptin e linkerit që përdoret nga linkeri.

--version-script = version-scriptfile

Specifikoni emrin e një skripti versioni te linkeri. Kjo zakonisht përdoret kur krijohen biblioteka të përbashkëta për të specifikuar informacione shtesë për heirarkinë e versionit për bibliotekën që po krijohet. Ky opsion ka kuptim vetëm në platformat ELF që mbështesin bibliotekat e përbashkëta.

--warn-përbashkët

Paralajmroni kur një simbol i përbashkët kombinohet me një tjetër simbol të përbashkët ose me një përkufizim të simboleve. Lidhësit Unix lejojnë këtë praktikë disi të lëngshme, por lidhësit në disa sisteme të tjera operative nuk e bëjnë këtë. Ky opsion ju lejon të gjeni probleme të mundshme nga kombinimi i simboleve globale. Për fat të keq, disa biblioteka C përdorin këtë praktikë, kështu që ju mund të merrni disa paralajmërime për simbolet në bibliotekat, si dhe në programet tuaja.

Ekzistojnë tri lloje të simboleve globale, ilustruar këtu nga shembujt C:

int i = 1;

Një përkufizim, i cili shkon në seksionin e të dhënave të inicializuara të skedarit të prodhimit.

extern int i;

Një referencë e padefinuar, e cila nuk shpërndan hapësirë. Duhet të ketë ose një përkufizim ose një simbol të përbashkët për variablin diku.

int i;

Një simbol i përbashkët. Nëse ka vetëm (një ose më shumë) simbole të përbashkëta për një variabël, ajo shkon në zonën e të dhënave të papërzializuara të skedarit të prodhimit. Lidhësi bashkon simbole të shumta të përbashkëta për të njëjtën variabël në një simbol të vetëm. Nëse ato janë me madhësi të ndryshme, zgjedh madhësinë më të madhe. Lidhësi kthen një simbol të përbashkët në një deklaratë, nëse ka një përkufizim të të njëjtit ndryshore.

Opsioni - warn-common mund të prodhojë pesë lloj paralajmërimesh. Çdo paralajmërim përbëhet nga një palë rreshta: i pari përshkruan simbolin e hasur, dhe i dyti përshkruan simbolin e mëparshëm që haset me të njëjtin emër. Një ose të dyja prej dy simboleve do të jenë një simbol i përbashkët.

1.

Duke kthyer një simbol të përbashkët në një referencë, sepse tashmë ekziston një përkufizim për simbolin.

(
): paralajmërim: i zakonshëm i ` 'mbivendosur nga përkufizimi (
): paralajmërim: përcaktuar këtu

2.

Duke kthyer një simbol të përbashkët në një referencë, sepse haset një përkufizim i mëvonshëm për simbolin. Ky është i njëjtë me rastin e mëparshëm, përveç se simbolet hasen në një mënyrë tjetër.

(
): paralajmërim: përkufizimi i < 'overriding common (
): paralajmërim: e zakonshme është këtu

3.

Bashkimi i një simboli të përbashkët me një simbol të përbashkët të njëjtë të njëjtë.

(
): paralajmërim: shumëfish i zakonshëm i < ' (
): paralajmërim: e zakonshme e mëparshme është këtu

4.

Bashkimi i një simboli të përbashkët me një simbol më të madh të mëparshëm.

(
): paralajmërim: i zakonshëm i ` 'i anashkaluar nga (
): warning:

5.

Bashkimi i një simboli të përbashkët me një simbol më të vogël të mëparshëm. Ky është i njëjtë me rastin e mëparshëm, përveç se simbolet hasen në një mënyrë tjetër.

(
): paralajmërim: i zakonshëm i <

--warn-ndërtuesit

Paralajmëroni nëse përdoren ndërtuesit globalë. Kjo është e dobishme vetëm për disa formate të skedarëve të objekteve. Për formatet si COFF ose ELF, lidhësi nuk mund të zbulojë përdorimin e ndërtuesve globalë.

--warn-multiple-gp

Paralajmëroni nëse janë të nevojshme vlerat e shumë treguesve globale në skedarin e prodhimit . Kjo është vetëm kuptimplotë për disa përpunues, siç është Alpha. Në mënyrë të veçantë, disa përpunues vënë konstante me vlera të mëdha në një seksion të veçantë. Një regjistër i veçantë (treguesi global) tregon në mes të këtij seksioni, në mënyrë që konstante të mund të ngarkohen në mënyrë efiçente nëpërmjet një regjimi relativ të adresës së regjistrimit bazë. Meqenëse kompensimi në regjimin relative të regjistrit bazë është fikse dhe relativisht i vogël (p.sh., 16 bit), kjo kufizon madhësinë maksimale të pishinës së vazhdueshme. Kështu, në programe të mëdha, shpesh është e nevojshme të përdoren vlera të shumëfishta të treguesve global në mënyrë që të mund të trajtohen të gjitha konstantet e mundshme. Ky opsion shkakton një paralajmërim që do të lëshohet sa herë që ndodh ky rast.

--warn-herë

Vetëm paralajmërojeni një herë për secilën simbol të pacaktuar, më shumë se një herë në modul që i referohet asaj.

--warn-seksioni-align

Paralajmëroni nëse adresa e një seksioni të prodhimit ndryshohet për shkak të shtrirjes. Në mënyrë tipike, shtrirja do të vendoset nga një seksion i hyrjes. Adresa do të ndryshohet vetëm nëse nuk është e specifikuar në mënyrë eksplicite; dmth. nëse komanda "Seksione" nuk specifikon një adresë fillestare për seksionin.

--whole-arkiv

Për secilin arkiv të përmendur në rreshtin komandues pas opsionittërë-arkivit , përfshini çdo skedar objekti në arkiv në link, në vend që të kërkoni arkivin për skedarët e objektit të kërkuar. Kjo zakonisht përdoret për të kthyer një skedar arkivi në një bibliotekë të përbashkët, duke detyruar çdo objekt të përfshihet në bibliotekën e përbashkët që rezulton. Ky opsion mund të përdoret më shumë se një herë.

Dy shënime kur përdorni këtë opsion nga gcc: Së pari, gcc nuk e di për këtë opsion, kështu që duhet të përdorni -Wl, -të gjithë arkivin . Së dyti, mos harro të përdorësh -Wl, -një tërë arkivë pas listës së arkivave, sepse gcc do të shtojë listën e vet të arkivave në lidhjen tënde dhe ju nuk mund të dëshironi që ky flamur të prekë ato gjithashtu.

simboli i veshjes

Përdorni një funksion mbështjellës për simbolin . Çdo referencë e padefinuar ndaj simbolit do të zgjidhet të "__ wrap_symbol". Çdo referencë e padefinuar në "__real_symbol" do të zgjidhet me simbol .

Kjo mund të përdoret për të siguruar një mbështjellëse për një funksion të sistemit. Funksioni i mbështjellësit duhet të quhet "__wrap_symbol". Nëse dëshiron të telefonojë funksionin e sistemit, duhet të thërrasë "__ real_symbol".

Këtu është një shembull i parëndësishëm:

void * __wrap_malloc (int c) {printf ("malloc quajtur me% ld \ n", c); kthimi __real_malloc (c); }

Nëse lidhni kodin tjetër me këtë skedar duke përdorur --wag malloc , atëherë të gjitha thirrjet në "malloc" do të thërrasin funksionin "__wrap_malloc". Thirrja për "__real_malloc" në "__wrap_malloc" do të quhet funksioni i vërtetë "malloc".

Ju mund të dëshironi të jepni gjithashtu një funksion "__real_malloc", kështu që lidhjet pa opsionin -wrap do të kenë sukses. Nëse e bëni këtë, nuk duhet të vendosni përkufizimin e "__ real_malloc" në të njëjtën skedë si "__wrap_malloc"; në qoftë se bëni, montuesi mund ta zgjidhë thirrjen para se linkeri të ketë një shans për ta përfunduar atë në "malloc".

--enable-new-dtags

--disable-new-dtags

Ky linker mund të krijojë tags të reja dinamike në ELF. Por sistemet e vjetra ELF nuk mund t'i kuptojnë ato. Nëse specifikoni --enable-new-dtags , tags dinamike do të krijohen sipas nevojës. Nëse specifikoni --disable-new-dtags , nuk do të krijohen etiketa të reja dinamike. By default, etiketat e reja dinamike nuk krijohen. Vini re se këto mundësi janë të disponueshme vetëm për sistemet ELF.

Link i386 PE mbështet opsionin e përbashkët , i cili shkakton që produkti të jetë një bibliotekë e lidhur dinamike (DLL) në vend të një ekzekutuesi normal. Ju duhet të emërtoni outputin "* .dll" kur përdorni këtë opsion. Përveç kësaj, lidhësi mbështet plotësisht skedarët standardë "* .def", të cilat mund të specifikohen në linjën komanduese të linkerit si një skedar objekti (në të vërtetë, duhet t'i paraprijë arkivave që eksportojnë simbolet, për të siguruar që ato të lidhen, ashtu si një skedar normal object).

Përveç opsioneve të përbashkëta për të gjitha objektivat, i386 PE lidhës mbështet opsionet shtesë të linjës së komandës që janë specifike për objektivin i386 PE. Opsionet që marrin vlera mund të ndahen nga vlerat e tyre qoftë nga një hapësirë ​​ashtu edhe nga një shenjë e barabartë.

--add-stdcall-ndryshe

Nëse jepet, simbolet me një prapashtesë stdcall (@ nn ) do të eksportohen si-janë dhe gjithashtu me sufiksin e zhveshur.

- skedari i bazës së të dhënave

Përdorni skedarin si emër të një skedari në të cilin për të ruajtur adresat bazë të të gjitha zhvendosjeve të nevojshme për gjenerimin e DLL-ve me dlltool .

--dll

Krijo një DLL në vend të një ekzekutuesi të rregullt. Ju gjithashtu mund të përdorni - të ndarë ose të specifikoni një "LIBRARY" në një skedar ".def" të dhënë.

--enable-stdcall-fixup

--disable-stdcall-fixup

Nëse lidhja gjen një simbol që nuk mund të zgjidhet, do të përpiqet të bëjë "lidhje fuzzy" duke kërkuar një simbol tjetër të përcaktuar që ndryshon vetëm në formatin e emrit të simbolit (cdecl vs stdcall) dhe do të zgjidhë atë simbol duke lidhur në ndeshjen. Për shembull, simboli i padefinuar "_foo" mund të lidhet me funksionin "_foo @ 12" ose simboli i padefinuar "_bar @ 16" mund të lidhet me funksionin "_bar". Kur linkeri e bën këtë, ai printon një paralajmërim, pasi normalisht duhet të ketë dështuar të lidhë, por nganjëherë importi bibliotekat e gjeneruara nga dll-të e palëve të treta mund të kenë nevojë që kjo veçori të jetë e përdorshme. Nëse specifikoni --enable-stdcall-fixup , kjo veçori është plotësisht e aktivizuar dhe paralajmërimet nuk shtypen. Nëse specifikoni --disable-stdcall-fixup , kjo veçori është e çaktivizuar dhe mospërputhjet e tilla konsiderohen si gabime.

--export-gjitha-simbolet

Nëse jepet, të gjitha simbolet globale në objektet e përdorura për të ndërtuar një DLL do të eksportohen nga DLL. Vini re se ky është parazgjedhja nëse nuk do të kishte ndonjë simbol të eksportuar. Kur simbolet eksportohen eksplicite nëpërmjet skedarëve DEF ose eksportohen implicitisht nëpërmjet atributeve të funksionit, parazgjedhja është që të mos eksportojë asgjë tjetër përveç nëse kjo mundësi është dhënë. Vini re se simbolet "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12" dhe "impure_ptr" nuk do të eksportohen automatikisht. Gjithashtu, simbolet e importuara nga DLL-të tjera nuk do të rieksportohen, as simbole që specifikojnë paraqitjen e brendshme të DLL-së, siç janë ato që fillojnë me "_head_" ose përfundojnë me "_iname". Përveç kësaj, nuk do të eksportohen simbole nga "libgcc", "libstd ++", "libmingw32" ose "crtX.o". Simbolet emrat e të cilëve fillojnë me "__rtti_" ose "__builtin_" nuk do të eksportohen, për të ndihmuar me DLL-të C ++. Së fundi, ekziston një listë e gjerë e simboleve cygwin-private që nuk eksportohen (natyrisht, kjo vlen për ndërtimin e DLL-ve për objektivat e cygwin-it).

Këto cygwin-përjashton janë: "_cygwin_dll_entry @ 12", "_cygwin_crt0_common @ 8", "_ cygwin_noncygwin_dll_entry @ 12", "_fmode", "_impure_ptr", "cygwin_attach_dll", "cygwin_premain0", "cygwin_premain1", "cygwin_premain2", "cygwin_premain3 "dhe" mjedis ".

- përjashtoj-simbole simbol , simbol , ...

Specifikon një listë të simboleve të cilat nuk duhet të eksportohen automatikisht. Emrat e simboleve mund të kufizohen nga kometa ose dy pika.

--përjashtoj libs lib , lib , ...

Specifikon një listë të bibliotekave arkivore nga të cilat simbolet nuk duhet të eksportohen automatikisht. Emrat e bibliotekave mund të kufizohen me presje ose dy pika. Specifikimi i "--exclude-libs ALL" përjashton simbolet në të gjitha bibliotekat arkivore nga eksporti automatik. Simbolet e listuara në mënyrë eksplicite në një skedë .def vazhdojnë të eksportohen, pavarësisht nga ky opsion.

--file-shtrirjes

Specifikoni shtrirjen e skedarit. Seksionet në skedar do të fillojnë gjithmonë në kompensimet e skedarëve të cilat janë shumëfish të këtij numri. Kjo defaults në 512.

- rezervë hekuri

- rezervë hekuri , kryejnë

Specifikoni sasinë e kujtesës për të rezervuar (dhe mundësisht të kryeni) që do të përdoret si grumbull për këtë program. Default është 1Mb i rezervuar, 4K i zotuar.

- vlera e imazhit bazë

Përdorni vlerën si adresën bazë të programit tuaj ose dll. Ky është vendi më i ulët i kujtesës që do të përdoret kur programi ose DLL-ja juaj të jetë ngarkuar. Për të reduktuar nevojën për të zhvendosur dhe përmirësuar performancën e dll-ve tuaj, secili duhet të ketë një adresë unike bazë dhe të mos mbivendosë ndonjë dll tjetër. Parazgjedhja është 0x400000 për ekzekutuesit, dhe 0x10000000 për dlls.

--kill-at

Nëse jepet, suffixes stdcall (@ nn ) do të hiqen nga simbolet para se të eksportohen.

--Major-image-version vlera

Cakton numrin kryesor të versionit "imazhi". Paraqet në 1.

- vlera maksimale-maj-version

Cakton numrin kryesor të versionit `` os ''. Përfundon në 4.

- vlera e versionit -major-nënsistem

Cakton numrin kryesor të versionit `` nënsistem ''. Përfundon në 4.

--minor-image-version vlera

Cakton numrin e vogël të "versionit të imazhit". Përfundon në 0.

- vlera e versionit të minor-os

Cakton numrin e vogël të versionit `` os ''. Përfundon në 0.

- vlera e versionit minor-nënsistem

Cakton numrin e vogël të versionit `` nënsistem ''. Përfundon në 0.

- file output-def

Lidhësi do të krijojë skedarin që do të përmbajë një skedar DEF që korrespondon me DLL-në që lidhësja gjeneron. Kjo skedar DEF (i cili duhet të quhet "* .def") mund të përdoret për të krijuar një bibliotekë importi me "dlltool" ose mund të përdoret si referencë për simbolet automatikisht ose implicitisht të eksportuara.

- skedë pa hyrje

Lidhësi do të krijojë skedarin që do të përmbajë një lib importesh që i korrespondon DLL-së që lidhësja gjeneron. Ky import lib (i cili duhet të quhet "* .dll.a" ose "* .a" mund të përdoret për të lidhur klientët me DLL-në e gjeneruar; kjo sjellje mundëson kalimin e një hapi të veçantë të krijimit të bibliotekës së importit "dlltool".

--enable-auto-image-bazë

Automatikisht zgjidhni bazën e imazhit për DLL, përveç nëse një është specifikuar duke përdorur argumentin "--image-base". Duke përdorur një hash të gjeneruar nga dllname për të krijuar baza unike të imazhit për secilën DLL, ndalesat në memorie dhe zhvendosjet që mund të vonojnë zbatimin e programit shmangen.

--disable-auto-image-bazë

Mos gjeneroni automatikisht një bazë unike të imazhit. Nëse nuk ka bazë të imazhit të specifikuar nga përdoruesi ("--image-base") atëherë përdorni platformën default.

--dll-search-prefix string

Kur lidhni dinamikisht në një dll pa një bibliotekë importi, kërkoni " .dll" në preferencë te "lib .dll". Kjo sjellje lejon dallim të lehtë në mes të DLL-ve të ndërtuara për subplatforms të ndryshme: native, cygwin, uwin, pw, etj. Për shembull, DLL-ja e cygwin zakonisht përdorin "--dll-search-prefix = cyg".

--enable-auto-import

Bëni lidhjen e sofistikuar të "_symbol" me "__imp__symbol" për importimin e DATA nga DLLs dhe krijoni simbolet e duhura të thunking kur ndërtoni bibliotekat e importit me ato DATAexports. Kjo në përgjithësi do të 'punojë vetëm' --- por ndonjëherë ju mund të shihni këtë mesazh:

"variable" "nuk mund të importohet automatikisht. Ju lutemi lexoni dokumentacionin për" -enable-auto-import "të ld për detaje."

Ky mesazh ndodh kur disa (nën) shprehje arrijnë një adresë të dhënë përfundimisht nga shuma e dy konstante (tavolina e importit të Win32 lejojnë vetëm një). Rastet ku kjo mund të ndodhë përfshijnë akseset në fushat e anëtarëve të variablave të strukturuara të importuara nga një DLL, si dhe duke përdorur një indeks të vazhdueshëm në një variabël array të importuar nga një DLL. Çdo ndryshore e shumëfishtë (vargjet, ndërtimet, gjatë, etj.) Mund të shkaktojë këtë gjendje gabimi. Sidoqoftë, pavarësisht nga lloji i saktë i të dhënave të variablave të eksportuara, ld gjithmonë do ta zbulojë, lëshojë paralajmërimin dhe dalin.

Ka disa mënyra për të adresuar këtë vështirësi, pavarësisht nga tipi i të dhënave të variablave të eksportuara:

Një mënyrë është që të përdorësh kalimin e mundshëm-runtime-pseudo-reloc. Kjo lë detyrën e rregullimit të referencave në kodin e klientit për mjedisin e runtimes, kështu që kjo metodë funksionon vetëm kur mjedisi i runtime mbështet këtë funksion.

Një zgjidhje e dytë është për të detyruar një nga 'konstante' të jetë një ndryshore - që është, e panjohur dhe jo optimizuese në kohën e përpilimit. Për vargjet, ekzistojnë dy mundësi: a) të bëjë indexee (adresa e array) një ndryshore, ose b) të bëjë indeksin 'konstant' një ndryshore. Kështu:

extern lloj extern_array []; extern_array [1] -> {tipi i paqëndrueshëm * t = extern_array; t [1]}

ose

extern lloj extern_array []; extern_array [1] -> {int volatile t = 1; extern_array [t]}

Për ndërtesat (dhe shumica e llojeve të të dhënave të shumëfishtë të fjalëve) e vetmja mundësi është që vetë struktura (ose variabla e gjatë ose ...) të ndryshojë:

extern struct s extern_struct; extern_struct.field -> {struktura e paqëndrueshme s * t = & extern_struct; t-> fushë}

ose

extern gjatë gjatë extern_ll; extern_ll -> {paqëndrueshme gjatë gjatë * local_ll = & extern_ll; * local_ll}

Një metodë e tretë e trajtimit të kësaj vështirësie është braktisja e "importit automatik" për simbolin e fyerjes dhe të shënosh me "__declspec (dllimport)". Sidoqoftë, në praktikë kjo kërkon përdorimin e kohës së përpilimit #defines për të treguar nëse po ndërton një DLL, ndërtimin e kodit të klientit që do të lidhet me DLL-në ose thjesht ndërtimin / lidhjen me një bibliotekë statike. Në marrjen e zgjedhjes midis metodave të ndryshme të zgjidhjes së problemit të "adresimit të drejtpërdrejtë me kompensim të vazhdueshëm", duhet të konsideroni përdorimin tipik të botës reale:

Original:

--foo.h extern int arr []; --foo.c #include "foo.h" void kryesore (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

Zgjidhja 1:

--foo.h extern int arr []; --foo.c #include "foo.h" void kryesore (int argc, char ** argv) {/ * Kjo zgjidhje është për win32 dhe cygwin; mos "optimizoni" * / int fluturues * parr = arr; printf ( "% d \ n", parr [1]); }

Zgjidhja 2:

--foo.h / * Shënim: supozohet auto-eksporti (jo __declspec (dllexport)) * / #if (definuar (_WIN32) || përcaktuar (__ CYGWIN__)) && \! (definuar (FOO_BUILD_DLL) || përcaktuar (FOO_STATIC )) #define FOO_IMPORT __declspec (dllimport) #else #define FOO_IMPORT #endif jashtëm FOO_IMPORT int arr []; --foo.c #include "foo.h" void kryesore (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

Një mënyrë e katërt për të shmangur këtë problem është që të ri- kodoni bibliotekën tuaj për të përdorur një ndërfaqe funksionale dhe jo një ndërfaqe të të dhënave për variablet e ofendimit (p.sh. set_foo () dhe get_foo () funksionet accessor).

--disable-auto-import

Mos u mundoni të bëni lidhje të sofistikuara të "_symbol" në "__imp__symbol" për DATAimports nga DLL.

--enable-runtime-pseudo-reloc

Nëse kodi juaj përmban shprehje të përshkruara në seksionin -enable-auto-import, dmth, DATAimports nga DLL me offset jo-zero, ky kaloni do të krijojë një vektor të 'pseudo relocations runtime' që mund të përdoret nga mjedisi runtime për të rregulluar referencat për këto të dhëna në kodin e klientit tuaj.

--disable-runtime-pseudo-reloc

Mos krijoni zhvendosje pseudo për importet e DATA të kompensuara jo nga zero nga DLL. Ky është parazgjedhja.

--enable-ekstra-pe-debug

Shfaq informacion shtesë të debugut në lidhje me simbolin e importimit automatik të thunking.

--section-shtrirjes

Cakton shtrirjen e seksionit. Seksionet në kujtesë do të fillojnë gjithmonë në adresat të cilat janë një shumëfish i këtij numri. Paraqet në 0x1000.

- rezerva e stacionit

- rezervoni stacionin , kryej

Specifikoni sasinë e kujtesës për të rezervuar (dhe mundësisht të kryeni) që të përdoret si pirg për këtë program. Parazgjedhja është 2Mb e rezervuar, 4K e kryer.

--Subsistemi i cili

--Subsystem i cili : i madh

--Subsystem i cili : i madh . minor

Specifikon nënsistemin nën të cilin programi juaj do të ekzekutohet. Vlerat ligjore për të cilat janë "amtare", "dritare", "console" dhe "posix". Mund të vendosni opsionalisht edhe versionin e nënsistemit.

E rëndësishme: Përdorni komandën e njeriut ( % man ) për të parë se si përdoret një komandë në kompjuterin tuaj të veçantë.