Skip to main content

Viss par Linux / Unix komandu: ld

Anonim

NAME

ld - Izmantojot LD, GNU linker

SINOPSIS

ld iespējas objfile …

APRAKSTS

ld apvieno vairākus objektu un arhīvu failus, pārvieto savus datus un apvieno simbolu atsauces. Parasti pēdējais solis programmas sastādīšanā ir palaistld.

ld pieņem Linker Command Language failus, kas uzrakstīti AT & T's Link Editor Command Valodu sintaksē, lai nodrošinātu skaidru un pilnīgu kontroli pār saistīšanas procesu.

Šajā cilvēka lapā nav aprakstīta komandu valoda; skatld ieraksts "info" vai rokasgrāmata ld: GNU linker, lai iegūtu pilnīgu informāciju par komandu valodu un citiem aspektiem, kas saistīti ar GNU linker.

Šī versijald izmanto vispārējas nozīmes BFD bibliotēkas darbībai objekta failos. Tas atļaujld lai izlasītu, apvienotu un rakstītu objektu failus dažādos formātos - piemēram, COFF vai "a.out". Varat sasaistīt dažādus formātus, lai izveidotu jebkuru pieejamo objekta faila veidu.

Papildus tam, ka tā ir elastīga, GNU linker ir noderīgāka nekā citi linkeri diagnostikas informācijas nodrošināšanā. Daudzi linkeri atsakās izpildīt tūlīt pēc kļūdu rašanās; kad vien iespējams,ld turpina izpildīt, ļaujot jums noteikt citas kļūdas (vai dažos gadījumos iegūt izvades failu, neraugoties uz kļūdu).

GNU saiteld ir domāts, lai aptvertu plašu situāciju spektru, un būt pēc iespējas saderīgākam ar citiem linkeriem. Tā rezultātā jums ir daudz iespēju, lai kontrolētu tā uzvedību.

OPTIONS

Linkeris atbalsta virkni komandrindas opciju, bet reālā praksē daži no tiem tiek izmantoti kādā konkrētā kontekstā. Piemēram, bieži lietotld ir saistīt standarta Unix objektu failus ar standarta, atbalstītu Unix sistēmu. Šādā sistēmā, lai saistītu failu "hello.o":

/lib/crt0.o hello.o -lc

Tas stāstald lai izveidotu failu, ko sauc produkcija kā rezultāts, saistot failu "/lib/crt0.o" ar "hello.o" un bibliotēku "libc.a", kas nāk no standarta meklēšanas direktorijiem. (Skatīt diskusiju par-l zemāk.)

Daži komandrindas opcijas uzld var norādīt jebkurā komandrindas punktā. Tomēr opcijas, kas attiecas uz failiem, piemēram,-l vai-T, izraisa faila lasīšanu vietā, kurā opcija parādās komandrindā, salīdzinot ar objekta failiem un citām faila opcijām. Atkārtojot ne-failu opcijas ar citu argumentu, vai nu vairs nebūs efekta, vai ignorēt iepriekš minētās parādības (tās, kas ir tālāk no komandrindas kreisās puses). Iespējas, kuras var būt jēgpilni norādītas vairāk nekā vienu reizi, ir aprakstītas zemāk.

Neparādības argumenti ir objektu faili vai arhīvi, kas ir jāsaista kopā. Tie var sekot, ieiet vai sajaukt ar komandrindas opcijām, izņemot to, ka starp opciju un tā argumentu objektu faila arguments nevar tikt novietots.

Parasti linker tiek aktivizēts ar vismaz vienu objekta failu, bet varat norādīt citus bināro ievades failu veidus, izmantojot-l, -R, un skriptu komandu valoda. Ja Nē Binārie ievades faili vispār ir norādīti, saite nesniedz nekādu izvadi un izsniedz ziņojumuNav ievades failu.

Ja saite nespēj atpazīt objekta faila formātu, tā pieņems, ka tas ir saišu skripts. Šādā veidā norādītais skripts papildina saiti izmantoto galveno saišu skriptu (vai nu noklusējuma sasaistes skriptu, vai arī to, kas norādīts, izmantojot-T) Šī funkcija ļauj saitei saistities ar failu, kas, šķiet, ir objekts vai arhīvs, bet faktiski tikai nosaka dažas simbolu vērtības vai izmanto "INPUT" vai "GROUP", lai ielādētu citus objektus. Ņemiet vērā, ka šādā veidā norādot skriptu, tiek vienkārši palielināts galvenais sasaistes skripts; izmantojiet-T iespēja pilnībā aizstāt noklusējuma saistīšanas skriptu.

Attiecībā uz opcijām, kuru nosaukumi ir viena burta, opciju argumentos jābūt vai nu pēc izvēles burta, neiejaucoties atstarpei, vai arī kā atsevišķus argumentus uzreiz pēc izvēles, kas tiem ir nepieciešama.

Opcijām, kuru nosaukumi ir vairāki burti, pirms opcijas nosaukuma var būt vai nu viena domuzīme vai divi; piemēram,-ceļa simbols un- trajektorijas simbols ir līdzvērtīgi. Piezīme - šim noteikumam ir viens izņēmums. Vairāku burtu opcijas, kas sākas ar mazo burtu "o", var priekšlaicīgi veikt tikai ar divām domām. Tas ir, lai mazinātu neskaidrības ar-o iespēja. Piemēram-maģisks nosaka izvades faila nosaukumu uzmaģija tā kā- maģisks nosaka izejas NMAGIC karogu.

Vairāku burtu opciju argumentus vajadzētu vai nu atdalīt no opcijas nosaukuma ar vienādmalu simbolu, vai arī sniegt kā atsevišķus argumentus tūlīt pēc opcijas, kas viņiem pieprasa. Piemēram,- trajektorijas simbols foo un--trace-simbols = foo ir līdzvērtīgi. Ir pieņemti daudzkārtēju burtu nosaukumu unikālas saīsinājumi.

Piezīme. Ja linker tiek izmantots netieši, izmantojot kompilatora draiveri (piemgcc), tad visas saites komandrindas opcijas būtu jāpievieno ar-Wl (vai kāds ir piemērots konkrētajam kompilatora vadītājam), piemēram:

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

Tas ir svarīgi, jo pretējā gadījumā kompilatora draivera programma var klusējot samazināt saišu opcijas, kā rezultātā rodas slikta saite.

Šeit ir tabula par vispārīgajiem komandrindas slēdžiem, kurus pieņēmusi GNU saite:

-a atslēgvārds

Šī iespēja tiek atbalstīta HP / UX saderībai. The atslēgvārds Argumentam jābūt vienai no virknesarhīvs, dalīts, vainoklusējums. -archive ir funkcionāli līdzvērtīgs-Bstatic, un pārējie divi atslēgvārdi funkcionāli ir līdzvērtīgi-Bdinamic. Šo iespēju var izmantot vairākos reizēs.

-A arhitektūra

- arhitektūra = arhitektūra

Pašreizējā izlaidumāld, šī opcija ir noderīga tikai Intel 960 arhitektūras saimei. Tajāld konfigurācija, arhitektūra arguments identificē īpašo arhitektūru 960 ģimenē, dodot iespēju veikt dažus aizsardzības pasākumus un mainīt arhīva un bibliotēkas meklēšanas ceļu.

Nākotnes izlaidumild var atbalstīt līdzīgu funkcionalitāti citām arhitektūras ģimenēm.

-b ievades formāts

--format = ievades formāts

ld var konfigurēt, lai atbalstītu vairāk nekā vienu objektu faila veidu. Ja tavsld ir konfigurēts šādā veidā, jūs varat izmantot-b iespēja norādīt ievades objektu failu bināro formātu, kas pēc šīs opcijas tiek izmantotas komandrindā. Pat tad, jald ir konfigurēts, lai atbalstītu alternatīvus objektu formātus, jums parasti nav nepieciešams to norādīt kāld ir jākonfigurē, lai par noklusējuma ievades formātu sagaidītu visbiežāk izmantoto formātu katrā datorā. ievades formāts ir teksta virkne, konkrēta formāta nosaukums, ko atbalsta BFD bibliotēkas. (Jūs varat norādīt pieejamos binārus formātus arobjdump-i.)

Iespējams, vēlēsities izmantot šo opciju, ja jūs saistāt failus ar neparastu bināro formātu. Jūs varat arī izmantot-b tieši pārslēgt formātus (sasaistot dažādu formātu objektu failus), iekļaujot-b ievades formāts pirms katras objektu failu grupas konkrētā formātā.

Noklusējuma formāts tiek ņemts no vides mainīgā "GNUTARGET".

Varat arī definēt ievades formātu no skripta, izmantojot komandu "TARGET";

-c MRI-komandfails

- mri-script = MRI-komandfails

Lai nodrošinātu saderību ar MRI radītajiem saišu veidotājiem,ld pieņem skriptu failus, kas rakstīti alternatīvā, ierobežotā komandu valodā, kas aprakstīta GNU ld dokumentācijas sadaļā MRI saderīgu skriptu faili. Ieviest MR skriptu failus ar opciju-c; izmantojiet-T iespÄ "ja palaist lÄ« dzes skriptus, kas rakstÄ «ti vispÄ rÄ« gÄld skriptu valoda. Ja MRI-cmdfile neeksistē,ldmeklē to direktorijās, kuras norādījis jebkurš-L iespējas

-d

-dc

-dp

Šīs trīs iespējas ir līdzvērtīgas; vairāku veidņu atbalsta saderību ar citiem linkeriem. Viņi piešķir vietu parastajiem simboliem pat tad, ja ir norādīts pārvietojamais izvades fails (ar-r) Skripta komandai "FORCE_COMMON_ALLOCATION" ir tāds pats efekts.

-e ieraksts

- centrs = ieraksts

Izmantojiet ieraksts kā skaidrs simbols jūsu programmas izpildes sākumam, nevis noklusējuma ievades punkts. Ja nav simbola ar nosaukumu ieraksts , linkeris mēģinās analizēt ieraksts kā numuru, un izmantojiet to kā ieejas adresi (numurs tiks interpretēts bāzē 10, jūs varat izmantot vadošo0x pamatne 16 vai vadošais0 bāzei 8).

-E

--eksporta dinamika

Veidojot dinamiski saistīto izpildāmo failu, pievienojiet visus simbolus dinamisko simbolu tabulai. Dinamisko simbolu tabula ir simbolu kopums, kas ir redzams no dinamiskajiem objektiem izpildes laikā.

Ja neizmantojat šo opciju, dinamiskā simbola tabula parasti satur tikai tos simbolus, uz kuriem atsaucas kāds dinamisks objekts, kas minēts saitē.

Ja jūs izmantojat "dlopen", lai ielādētu dinamisks objekts, kuram jāatgriežas programmā noteiktie simboli, nevis kāds cits dinamisks objekts, tad, iespējams, būs jāizmanto šī opcija, saista pati programma.

Varat arī izmantot versijas skriptu, lai kontrolētu, kādi simboli jāpievieno dinamisko simbolu tabulai, ja to atbalsta izvades formāts. Skatiet aprakstu par--versijas skripts in @ ref {VERSION}.

-EB

Saite lielu endian objektus. Tas ietekmē noklusējuma izvades formātu.

-EL

Saite mazo endian objektus. Tas ietekmē noklusējuma izvades formātu.

-f

--lietotājs vārds

Veidojot ELF koplietojamo objektu, iestatiet iekšējo DT_AUXILIARY lauku norādītajam nosaukumam. Tas norāda dinamisko saišu veidotāju, ka koplietojamā objekta simbolu tabulā koplietojamā objekta simbolu tabula jāizmanto kā palīgfiltrs vārds .

Ja jūs vēlāk piesaistīsiet programmu pret šo filtra objektu, tad, palaižot programmu, dinamiskā saite redzēs lauku DT_AUXILIARY. Ja dinamiskā saite atdala visus filtra objekta simbolus, vispirms pārbauda, ​​vai koplietotajā objektā ir definīcija vārds . Ja tas ir viens, tas tiks izmantots definīcijas vietā filtra objektā. Koplietojamais objekts vārds nav nepieciešams. Tādējādi koplietojamais objekts vārds var izmantot, lai nodrošinātu alternatīvu dažu funkciju ieviešanu, varbūt, lai novērstu atkļūdošanu vai mašīnai raksturīgu darbību.

Šo iespēju var norādīt vairāk nekā vienu reizi. DT_AUXILIARY ieraksti tiks izveidoti tādā secībā, kādā tie parādās komandrindā.

-F vārds

- filtrs vārds

Veidojot ELF koplietojamo objektu, norādiet iekšējo lauku DT_FILTER uz norādīto nosaukumu. Tas norāda dinamisko saišu veidotāju, ka koplietojamā objekta simbolu tabula, kas tiek izveidota, ir jāizmanto kā filtru koplietojamā objekta simbola tabulā vārds .

Ja jūs vēlāk piesaistīsiet programmu pret šo filtra objektu, tad, palaižot programmu, dinamiskā linker redzēs lauku DT_FILTER. Dinamiskais liksētājs atrisinās simbolus atbilstoši filtra objekta simbola tabulai kā parasti, bet tas tiešām saista ar definīcijām, kas atrastas kopīgajā objektā vārds . Tādējādi filtra objektu var izmantot, lai atlasītu objekta sniegto simbolu apakškopu vārds .

Daži vecākie linkeri izmantoja-F opciju kompilēšanas rīkjoslā, lai precizētu objekta faila formātu gan ievades, gan izvades objektu failiem. GNU saite izmanto šim nolūkam citus mehānismus:-b, - formāts, --format opcijas, komandu "TARGET" saišu skriptos un vides mainīgo "GNUTARGET". GNU saite ignorēs-F ja neesat izveidojis ELF kopīgu objektu.

-fini vārds

Veidojot ELF izpildāmo vai koplietoto objektu, zvaniet NAME, kad izpildāmā vai koplietojamais objekts ir izlaists, iestatot DT_FINI uz funkcijas adresi. Pēc noklusējuma saucējs izmanto funkciju "_fini" kā zvanīšanas funkciju.

-g

Ignorēts Paredzēts saderībai ar citiem rīkiem.

-G vērtība

--gpsize = vērtība

Iestatiet optimizējamo objektu maksimālo izmēru, izmantojot GP reģistrāciju Izmērs . Tas ir tikai nozīmīgs objektu failu formātiem, piemēram, MIPS ECOFF, kas atbalsta lielu un mazu objektu ievietošanu dažādās sadaļās. Tas tiek ignorēts citiem objektu failu formātiem.

-h vārds

-someam = vārds

Veidojot kopīgu objektu ELF, norādītajam vārdam iestatiet iekšējo lauku DT_SONAME. Kad izpildāmā programma ir saistīta ar koplietojamo objektu, kam ir lauka DT_SONAME, tad, izpildot izpildāmo failu, dinamiskā saite mēģinās ielādēt koplietoto objektu, kas norādīts laukā DT_SONAME, nevis izmantojot linkeram piešķirto faila nosaukumu.

-i

Veiciet papildu saiti (tāpat kā opciju-r).

-tajā vārds

Veidojot ELF izpildāmo vai koplietojamo objektu, zvaniet NAME, kad tiek izpildīts izpildāms vai koplietots objekts, nosakot DT_INIT uz funkcijas adresi. Pēc noklusējuma saucējs izmanto funkciju "zvanīt" kā "_init".

-l arhīvs

--library = arhīvs

Pievienot arhīva failu arhīvs uz saistīto failu sarakstu. Šo iespēju var izmantot vairākos reizēs.ld meklēs savu ceļu sarakstu par notikumiem "libarchive.a" par katru arhīvs norādīts.

Uz sistēmām, kas atbalsta kopīgas bibliotēkas,ld var arī meklēt bibliotēkas ar paplašinājumiem, kas nav ".a". Konkrēti, ELF un SunOS sistēmāsld meklēs bibliotēkas direktoriju ar paplašinājumu ".so", pirms meklēsit vienu ar paplašinājumu ".a". Saskaņā ar vienošanos ".so" paplašinājums norāda kopīgu bibliotēku.

Linkeris meklēs arhīvu tikai vienu reizi vietā, kur tā norādīta komandrindā. Ja arhīvs definē simbolu, kurš kādā objektā bija nenoteikts un kas tika parādīts pirms arhīva komandrindā, saite ietver attiecīgo failu (-s) no arhīva. Tomēr nenoteikts simbols objektā, kas vēlāk tiek parādīts komandrindā, nenozīmē, ka saite vēlāk meklēs arhīvu.

Skatīt-( veids, kā piespiest saiti meklēt arhīvus vairākas reizes.

Jūs varat vienu un to pašu arhīvu uzskaitīt vairākas reizes komandrindā.

Šāda veida arhīva meklēšana ir Unix linkeru standarts. Tomēr, ja jūs izmantojatld uzAIX, ņemiet vērā, ka tas atšķiras no AIX līknes darbības.

-L searchdir

--library-path = searchdir

Pievienot ceļu searchdir uz ceļu sarakstu, kasld meklēs arhīvu bibliotēkas unld kontroles skripti. Jūs varat izmantot šo opciju neierobežotu skaitu reižu. Katalogi tiek meklēti tādā secībā, kādā tie norādīti komandrindā. Komandrindā norādītās direktorijas tiek meklētas pirms noklusējuma direktorijām. Viss-L iespējas attiecas uz visiem-l iespējas, neatkarīgi no tā, kādā secībā opcijas parādās.

Ja searchdir sākas ar "=", tad "=" tiks aizstāts ar sysroot prefikss , ceļš, kas norādīts, kad saite ir konfigurēta.

Noklusētais ceļu ceļš, kuru meklējis (bez norādes ar-L) atkarīgs no tā, kurš emulācijas režīmsld izmanto, un dažos gadījumos arī par tā konfigurēšanu.

Ceļus var norādīt arī saites skriptā ar komandu "SEARCH_DIR". Šādi norādītie direktoriji tiek meklēti tajā vietā, kurā komandrindā parādās linkera skripts.

-m emulācija

Emulēt emulācija linker. Jūs varat uzskaitīt pieejamās emulācijas ar- verbose vai-Viespējas

Ja-m opcija netiek izmantota, emulācija tiek ņemta no "LDEMULATION" vides mainīgā, ja tas ir definēts.

Pretējā gadījumā noklusējuma emulācija ir atkarīga no tā, kā saite ir konfigurēta.

-M

- drukas karte

Izdrukājiet saišu karti uz standarta izvadi. Saites karte sniedz informāciju par saiti, tostarp sekojošo:

*

Ja objekta faili un simboli tiek mapēti atmiņā.

*

Kā tiek sadalīti simboli.

*

Visi arhīva dalībnieki, kas iekļauti saitē, ar norādi par simbolu, kas izraisīja arhīva dalībnieka ienākšanu.

-n

-nmagic

Izslēdziet sadaļu lapu izlīdzināšanu un, ja iespējams, atzīmējiet izvadi kā "NMAGIC".

-N

- maģisks

Iestatiet, ka teksta un datu sadaļas ir lasāmas un rakstāmas. Tāpat neizlīdziniet datu segmentu un atspējojiet saiti pret kopīgām bibliotēkām. Ja izvades formāts atbalsta Unix stila burvju numurus, atzīmējiet izvadi kā "OMAGIC".

-no-omagic

Šī opcija novērš lielāko daļu no-N iespēja. Tas nosaka, ka teksta sadaļa ir tikai lasāma, un liek datu segmentam pielāgot lapu. Piezīme. Šī opcija neļauj saistīt pret kopīgām bibliotēkām. Izmantojiet-Bdinamic priekš šī.

-o produkcija

- izlaide = produkcija

Izmantojiet produkcija kā nosaukums, ko izstrādājusild; ja šī opcija nav norādīta, nosaukums a.out tiek izmantots pēc noklusējuma. Skripta komanda "OUTPUT" var arī norādīt izvades faila nosaukumu.

-O līmenis

Ja līmenis ir ciparu vērtības, kas lielākas par nullild optimizē izlaidi. Tas var aizņemt ievērojami ilgākus laikposmus, tāpēc, iespējams, tas ir jāiespēj tikai pēdējam bināram.

-q

- emit-relocs

Atstājiet pārvietošanas sadaļas un saturu pilnībā saistītajos izpildāmjos failos. Lai varētu veikt pareizas izpildāmo failu izmaiņas, var būt nepieciešama šī ziņojuma saišu analīzes un optimizācijas rīku ievietošana. Tas rada lielākas izpildāmās programmas.

Pašlaik šī opcija tiek atbalstīta tikai ELF platformās.

-r

- sasaistāms

Izveidojiet pārvietojamu izvadi --- t.i., ģenerējiet izejas failu, kas savukārt var kalpot par ieguldījumuld. To bieži sauc daļēja saite . Kā blakusparādība vidē, kas atbalsta standarta Unix burvju numurus, šī opcija arī nosaka izejas faila burvju numuru "OMAGIC". Ja šī opcija nav norādīta, tiek izveidots absolūtais fails. Saistot C + + programmas, šī opcija nebūs atrisināt atsauces uz konstruktoriem; to izdarīt, izmantojiet-Ur.

Ja ievades failam nav tāda paša formāta kā izejas failam, daļēju saiti var atbalstīt tikai tad, ja šajā ievades failā nav pārvietošanas vietu. Dažādiem izvades formātiem var būt papildu ierobežojumi; piemēram, daži no "a.out" formāta formātiem neatbalsta daļēju saikni ar ievades failiem citos formātos.

Šī opcija ir tāda pati kā-i.

-R faila nosaukums

- vienkārši simboli = faila nosaukums

Lasīt simbolu nosaukumus un to adreses no faila nosaukums , bet ne pārvietojiet to vai neiekļaujiet to produkcijā. Tas ļauj jūsu izvades failam simboliski atsaukties uz absolūtām atmiņas vietām, kas definētas citās programmās. Jūs varat izmantot šo opciju vairāk nekā vienu reizi.

Saderībai ar citiem ELF linkeriem, ja-R pēc tam seko kataloga nosaukums, nevis faila nosaukums, tas tiek uzskatīts par-rpath iespēja.

-s

- striķis-viss

Izlaist visu informāciju par simbolu no izejas faila.

-S

--strāvas noņemšana

Izlaidiet atkļūdotāju simbolu informāciju (bet ne visus simbolus) no izvades faila.

-t

--traide

Izdrukājiet ievades failu nosaukumus kāld apstrādā tos.

-T skriptu fails

--script = skriptu fails

Izmantojiet skriptu fails kā saišu skriptu. Šis skripts aizstājld's noklusējuma linker skriptu (nevis pievienojot to), tā komandfails jānorāda viss, kas nepieciešams izvades faila aprakstam. Ja skriptu fails pašreizējā direktorijā nepastāv, "ld" to meklē kādā iepriekšējā sarakstā norādītajos katalogos-L iespējas Vairāki-T iespējas uzkrāt.

-u simbols

--undefinēts = simbols

Spēks simbols kas jāievada izejas failā kā nenoteikts simbols. Piemēram, to var aktivizēt papildu moduļu saites no standarta bibliotēkām.-u var atkārtot ar dažādiem opciju argumentiem, lai ievadītu papildu nenoteiktus simbolus. Šī opcija ir ekvivalenta komandas "EXTERN" linker script.

-Ur

Nevienam, izņemot C + + programmām, šī opcija ir līdzvērtīga-r: tā rada relocatable izejas --- t.i., izejas failu, kas savukārt var kalpot par ieguldījumuld. Saistot C + + programmas,-Ur dara atrisināt atsauces uz konstruktoriem, atšķirībā no-r. Tas nedarbojas, lai izmantotu-Ur par failiem, kas paši ir saistīti-Ur; Kad konstruktora tabula ir uzbūvēta, to nevar pievienot. Izmantojiet-Ur tikai pēdējai daļējai saitei, un-r citiem.

--unīgs = SECTION

Izveido atsevišķu izvades sadaļu katrai ieejas sadaļas saskaņošanai SECTION , vai ja ir izvēles aizstājējzīme SECTION trūkst argumentu par katru bāreņu ievades sadaļu. Bāreņu sadaļa ir tāda, kas nav īpaši minēta saišu skriptā. Šo opciju varat izmantot vairākas reizes komandrindā; Tas novērš parasto ieejas sadaļu apvienošanu ar tādu pašu nosaukumu, galvenajiem izvades sadaļas uzdevumiem saišu skriptā.

-v

- pārveide

-V

Parādiet versijas numuruld. The-V Opcija arī norāda atbalstītās emulācijas.

-x

- atcelt visu

Dzēst visus vietējos simbolus.

-X

- izvairīties no vietējiem iedzīvotājiem

Dzēst visus pagaidu vietējos simbolus. Lielākajai daļai mērķu tas ir visi vietējie simboli, kuru nosaukumi sākas arL.

-ja simbols

- trajektorijas simbols = simbols

Drukāt katra saistītā faila nosaukumu, kurā simbols parādās Šo iespēju var piešķirt vairākos reizēs. Daudzās sistēmās ir jāpievieno pasvītras zīme.

Šī opcija ir noderīga, ja jūsu saitē ir nenoteikts simbols, bet nezinu, no kurienes ir atsauce.

-Y ceļš

Pievienot ceļš noklusējuma bibliotēkas meklēšanas ceļš. Šī opcija pastāv Solaris saderībai.

-z atslēgvārds

Atzītie atslēgvārdi ir initfirst, interposition, loadfltr, nodefaultlib, nodelete, nodlopen, nodump, now, origin, combreloc, " Pārējos atslēgvārdus Solaris saderību ignorē. "initfirst" atzīmē priekšmetu, kas vispirms tiek inicializēts runtime pirms citiem objektiem."interpose" apzīmē objektu, ka tā simbola tabula ieslēdzas pirms visiem simboliem, bet gan primārajam izpildāmam failam. "loadfltr" apzīmē objektu, kas tiek apstrādāts nekavējoties runtime laikā. "nodefaultlib" apzīmē objektu, kas ignorē šī objekta atkarību meklēšanu visi noklusētie bibliotēkas meklēšanas ceļi. "nodelete" atzīmē objektu nevajadzētu izkraut runtime. "nodlopen" apzīmē objektu, kas nav pieejams "dlopen". "nodump" atzīmē, ka objektu nevar iznīcināt ar "dldump". "tagad" iezīmē objektu ar ne slinks runtime saistošs. "izcelsmes" zīmes objekts var saturēt $ ORIGIN. "defs" neļauj neapzīmēt simbolus. "muldefs" atļauj vairākas definīcijas. "combreloc" apvieno vairākas reloc sadaļas un tos šķiro, lai dinamiskā simbola uzmeklēšanas caching būtu iespējama.

"nocombreloc" atspējo vairākas reloc sadaļas, kas apvieno. "nocopyreloc" atspējo eksemplāru izgatavošanu.

-( arhīvi -)

- starta grupa arhīvi --end-grupa

The arhīvi vajadzētu būt arhīvu failu sarakstam. Tie var būt vai nu tiešie failu nosaukumi, vai arī-liespējas

Noteiktie arhīvi tiek meklēti atkārtoti, līdz nav izveidotas jaunas nenoteiktas atsauces. Parasti arhīvs tiek meklēts tikai vienreiz tādā secībā, kāds tas norādīts komandrindā. Ja simbols šajā arhīvā ir vajadzīgs, lai atrisinātu nenoteiktu simbolu, uz kuru atsaucas objekts arhīvā, kas vēlāk parādās komandrindā, saite nespētu atrisināt šo atsauci. Grupējot arhīvus, tos visus atkārtoti meklē, līdz tiek atrisinātas visas iespējamās atsauces.

Izmantojot šo opciju, ir ievērojamas veiktspējas izmaksas. Vislabāk to izmantot tikai tad, ja pastāv divu vai vairāku arhīvu nenovēršamās apļveida atsauces.

--pieņemt-nezināma ieeja-arch

- nepieņemams-nezināmais ievade-arh

Norāda linkeram pieņemt ievades failus, kuru arhitektūru nevar atpazīt. Pieņēmums ir tāds, ka lietotājs zina, ko viņi dara, un apzināti vēlas saistīt šos nezināmos ievades failus. Tā bija saite pēc noklusējuma, pirms 2.14 versijas. Noklusējuma darbība no 2.14 versijas ir jāatsakās no šādiem ievades failiem, un tādēļ--pieņemt-nezināma ieeja-arch variants ir pievienots, lai atjaunotu veco uzvedību.

apstiprināt atslēgvārds

Šī iespēja tiek ignorēta SunOS saderībai.

-Bdinamic

-diena

-call_shared

Saikne ar dinamiskajām bibliotēkām. Tas ir nozīmīgs tikai platformām, par kurām tiek atbalstītas dalītās bibliotēkas. Parasti šī opcija parasti ir šādās platformās. Šīs opcijas dažādie varianti ir savietojami ar dažādām sistēmām. Jūs varat izmantot šo opciju vairākas reizes komandrindā: tas ietekmē bibliotēku meklēšanu-l kas seko tai.

-B grupa

Dinamiskās sadaļas ierakstā "DT_FLAGS_1" iestatiet karodziņu "DF_1_GROUP". Tas izraisa runner linker, kas apstrādā meklēšanu šajā objektā, un tā atkarības tiek veiktas tikai grupas iekšienē.- nav definēts ir netieši. Šī opcija ir nozīmīga tikai ELF platformām, kas atbalsta kopīgas bibliotēkas.

-Bstatic

-dn

-non_shared

-stats

Neveidojiet saikni ar kopīgām bibliotēkām. Tas ir nozīmīgs tikai platformām, par kurām tiek atbalstītas dalītās bibliotēkas. Šīs opcijas dažādie varianti ir savietojami ar dažādām sistēmām. Jūs varat izmantot šo opciju vairākas reizes komandrindā: tas ietekmē bibliotēku meklēšanu-l kas seko tai.

-B simbolisks

Izveidojot kopīgu bibliotēku, dalītās bibliotēkas definīcijā saiti uz globāliem simboliem, ja tādi ir. Parasti programmā, kas ir saistīta ar kopīgu bibliotēku, ir iespējams ignorēt definīciju dalītajā bibliotēkā. Šī opcija ir nozīmīga tikai ELFplatforms, kas atbalsta kopīgas bibliotēkas.

--pārbaudes sekcijas

--nekontroles sadaļas

Pieprasa saiti nē lai pārbaudītu sadaļu adreses pēc tam, kad tām ir piešķirts, lai redzētu, vai pastāv pārklāšanās. Parasti šī saite veic šo pārbaudi, un, ja tā atklāj jebkādu pārklāšanos, tā radīs piemērotus kļūdas ziņojumus. Linkeris zina par to un dara atlīdzību par pārklājumu sadaļām. Noklusēto darbību var atjaunot, izmantojot komandrindas slēdzi--pārbaudes sekcijas.

--cref

Izvadiet pāri atsauces tabulai. Ja tiek ģenerēts linker kartes fails, mapes fails tiek iespiests krusteniskās atsauces tabula. Pretējā gadījumā tas tiek izdrukāts uz standarta izvades.

Tabulas formāts ir tīši vienkāršs, lai to, ja nepieciešams, varētu viegli apstrādāt ar skriptu. Simboli tiek drukāti, sakārtoti pēc nosaukuma. Par katru simbolu tiek parādīts failu nosaukumu saraksts. Ja simbols ir definēts, pirmais uzskaitītais fails ir definīcijas atrašanās vieta. Pārējie faili satur atsauces uz simbolu.

--no-define-common

Šī opcija apgrūtina adrešu piešķiršanu kopīgajiem simboliem. Skripta komandai "INHIBIT_COMMON_ALLOCATION" ir tāds pats efekts.

The--no-define-common opcija ļauj atsaistīt lēmumu piešķirt adreses Kopējiem simboliem, izvēloties izvades faila tipu; pretējā gadījumā non-Relocatable izejas tips pieprasa adreses Kopējiem simboliem. Izmantojot--no-define-common ļauj kopīgiem simboliem, uz kuriem atsaucas koplietojamā bibliotēka, piešķirt adreses tikai galvenajā programmā. Tas novērš neizmantoto dublēt vietu koplietotajā bibliotēkā, kā arī novērš jebkādu iespējamo neskaidrību par atrisināšanu nepareizā dublikātā, ja ir daudz dinamisko moduļu ar specializētiem meklēšanas ceļiem runtime simbolu izšķirtspējai.

--defsim simbols = izteiksme

Izejas failā izveidojiet globālu simbolu, kurā ir absolūtā adrese, kuru piešķir izteiksme . Šo opciju varat izmantot tik reižu, cik nepieciešams, lai komandrindā noteiktu vairākus simbolus. Tiek atbalstīta ierobežota aritmētiskās formas forma izteiksme šajā kontekstā: jūs varat norādīt heksadecimālo konstanti vai esošā simbola nosaukumu vai izmantot "+" un "-", lai pievienotu vai atņemtu heksadecimālās konstantes vai simbolus. Ja jums ir nepieciešamas sarežģītākas izteicienas, apsveriet iespēju izmantot skripta komandu valodu. Piezīme: starp atstarpēm nedrīkst būt atstarpes simbols , vienāds zīme (``=''), un izteiksme .

- dimants = stils

-ne-demangle

Šīs opcijas kontrolē, vai simbolu nosaukumus demagulēt kļūdas paziņojumos un citos produktos. Kad saite tiek teicis demangle, tā mēģina uzrakstīt simbolu nosaukumus lasāmā veidā: tas nofiksē vadošos pasvītras, ja tie tiek izmantoti objekta faila formātā, un pārveido C ++ pārveidotos simbolu vārdus lietotāja lasāmajos nosaukumos. Dažādiem kompilatoriem ir dažādi mangling stili. Neobligātās atdalīšanas stila argumentu var izmantot, lai izvēlētos atbilstošu kompilatora atdalīšanas stilu. Linker tiks demangle pēc noklusējuma, ja vien nav vides mainīgaisCOLLECT_NO_DEMANGLE ir iestatīts. Šīs opcijas var tikt izmantotas, lai ignorētu noklusējuma iestatījumus.

- dinamic-linker fails

Iestatiet dinamiskās linker nosaukumu. Tas ir tikai nozīmīgi, radot dinamiski saistītus ELF izpildāmos failus. Noklusējuma dinamiskais linkeris parasti ir pareizs; neizmantojiet to, ja vien nezināt, ko jūs darāt.

- embedded-relocs

Šī opcija ir nozīmīga tikai tad, ja saistot MIPS iegulto PIC kodu, ko ģenerējis -membedded-pic opcija GNU kompilatoram un montētājam. Tas liek saitei veidot tabulu, kuru var izmantot izpildes laikā, lai pārvietotu visus datus, kas tika statistiski inicializēti rādītāju vērtībām. Sīkāku informāciju skatiet sadaļā testuite / ld-empic.

--attēlu brīdinājumi

Visus brīdinājumus apstrādājiet kā kļūdas.

- force-exe-sufikss

Pārliecinieties, vai izejas failam ir .exe sufikss.

Ja veiksmīgi izveidotai pilnībā saistītajam izvades failam nav ".exe" vai ".dll" sufiksu, šī opcija piesaista linkeru kopēt izvades failu uz vienu nosaukumu ar ".exe" sufiksu. Šī opcija ir noderīga, ja tiek izmantotas nemodificētas Unix makefiles Microsoft Windows uzņēmējā, jo dažās Windows versijās netiek palaists attēls, izņemot, ja tas beidzas ar .exe sufiksu.

--no-gc-sekcijas

--gc-sekcijas

Iespējojiet neizmantoto ieejas sadaļu atkritumu savākšanu. Tas tiek ignorēts mērķiem, kas neatbalsta šo iespēju. Šī opcija nav saderīga ar-r, kā arī to nedrīkst izmantot ar dinamisku saikni. Noklusējuma uzvedību (neveicot šo atkritumu savākšanu) var atjaunot, norādot--no-gc-sekcijas uz komandrindas.

--palīdzība

Izdrukājiet kopsavilkumu par komandrindas opcijām standarta izvadē un izejot.

- Target-help

Izdrukājiet kopsavilkumu par visām mērķa specifiskajām opcijām standarta izvadē un izejot.

-Maiss mapfile

Drukāt failu saišu karti mapfile . Skatiet aprakstu par-M iepriekš minētais variants.

-ne-keep-atmiņa

ld parasti optimizē ātrumu, salīdzinot ar atmiņas izmantošanu, atmiņā saglabājot ievadīto failu simbolu tabulas. Šī iespēja stāstald tā vietā, lai optimizētu atmiņas izmantošanu, pēc vajadzības mainot simbolu tabulas. Tas var būt vajadzīgs, jald aizver atmiņu, vienlaikus savienojot lielu izpildāmo failu.

- nav definēts

-z defs

Parasti, veidojot nediskoloģisku dalītu bibliotēku, ir atļauti nedefinēti simboli, un tos paliek atrisināt ar runtime loader. Šīs opcijas aizliedz šādus nenoteiktus simbolus.

- atkārtota daudzkārtēja definīcija

-z muldefs

Parasti, ja simbols ir definēts vairākas reizes, saite ziņos par fatālu kļūdu. Šīs opcijas atļauj vairākas definīcijas un tiek izmantota pirmā definīcija.

--allow-shlib-undefined

Ļaujiet neapzīmētus simbolus koplietotajos objektos pat tad, ja ir iestatīts -no-undefined. Tīkla rezultāts būs tāds, ka nenoteiktajos simbolos parastajos objektos joprojām tiek aktivizēta kļūda, bet nevēlamie simboli koplietotajos objektos tiks ignorēti. No_undefined ieviešana pieļauj pieņēmumu, ka runtime linker tiks aizrīties ar nenoteiktiem simboliem. Tomēr ir vismaz viena sistēma (BeOS), kurā dalītu bibliotēku neapzīmēti simboli ir normāli, jo kodols tos ielādes laikā ielīmē, lai izvēlētos, kura funkcija ir vispiemērotākā pašreizējai arhitektūrai. I.E. dinamiski izvēlieties atbilstošu memset funkciju. Acīmredzot ir arī normāli, ka HPPA dalītajām bibliotēkām ir nedefinēti simboli.

- -no-undefined-versija

Parasti, kad simbolam ir nenoteikts variants, saite to ignorēs. Šī opcija neļauj simboliem ar nenoteiktu versiju, un tā vietā tiks izdota fatāla kļūda.

--no-warn-neatbilstība

Parastild radīs kļūdu, ja mēģināsit sasaistīt ieejas failus, kas kaut kāda iemesla dēļ neatbilst, iespējams, tāpēc, ka tie ir apkopoti dažādiem procesoriem vai dažādiem beigu datiem. Šī iespēja stāstald ka tai vajadzētu klusējot atļaut šādas iespējamās kļūdas. Šo opciju drīkst lietot tikai uzmanīgi gadījumos, kad esat veicis kādu īpašu darbību, kas nodrošina, ka saišu kļūdas nav piemērotas.

- bez arhīva

Izslēdziet ierīces efektu- pilnīgi arhīvs variants nākamajiem arhīvu failiem.

--noinhibit-exec

Saglabājiet izpildāmo izvades failu ikreiz, kad tas joprojām ir izmantojams.Parasti saites veidotājs neizveido izvades failu, ja saites procesā rodas kļūdas; tā iziet bez rakstiskas izvades faila, ja tā nekādā gadījumā neizdod nekādu kļūdu.

-nostdlib

Tikai meklējiet bibliotēkas direktorijus, kas ir skaidri norādīti komandrindā. Linkeru skriptos norādītie bibliotēku katalogi (ieskaitot komandrindas norādītos saišu skriptus) tiek ignorēti.

--format izejas formāts

ld var konfigurēt, lai atbalstītu vairāk nekā vienu objektu faila veidu. Ja tavsld ir konfigurēts šādā veidā, jūs varat izmantot--format iespēja norādīt izvades objekta faila bināro formātu. Pat tad, jald ir konfigurēts, lai atbalstītu alternatīvus objektu formātus, jums parasti nav nepieciešams to norādīt kāld ir jākonfigurē tā, lai noklusējuma izvades formāts būtu visizplatītākais formāts katrā datorā. izejas formāts ir teksta virkne, konkrēta formāta nosaukums, ko atbalsta BFD bibliotēkas. (Jūs varat norādīt pieejamos binārus formātus arobjdump-i.) Skripta komanda "OUTPUT_FORMAT" var arī norādīt izvades formātu, taču šī opcija to ignorē.

-qmagic

Šī opcija tiek ignorēta par Linux savietojamību.

-Qy

Šī opcija tiek ignorēta SVR4 saderībai.

- relaksācija

Iespēja ar mašīnas atkarīgajiem efektiem. Šo iespēju atbalsta tikai daži mērķi.

Dažās platformās- relaksācija opcija veic globālus optimizējumus, kas kļūst iespējami, ja saite atrisina adresi programmā, piemēram, atslodzes adrešu režīmus un sintēšot jaunus norādījumus izejas objekta failā.

Dažās platformās, kuras saistītas laika globālās optimizēšanas rezultātā, var padarīt iespējamo izpildāmo failu simbolisku atkļūdošanu neiespējamu. Tas ir zināms, ka Matsushita MN10200 un MN10300 procesoru saime.

Platformās, kur tas netiek atbalstīts- relaksācija ir pieņemts, bet tiek ignorēts.

--attēlu-simbolu-failu faila nosaukums

Saglabāt tikai failos uzskaitītie simboli faila nosaukums , izmetot visus pārējos. faila nosaukums ir vienkārši plakans fails ar vienu simbola nosaukumu katrā rindā. Šī opcija ir īpaši noderīga vidēs (piemēram, VxWorks), kur liela mēroga simbolu tabula tiek uzkrāta pakāpeniski, lai saglabātu darbības laiku atmiņu.

--attēlu-simbolu-failu dara nē izmest nenoteiktus simbolus vai simbolus, kas nepieciešami pārvietošanai.

Jūs varat norādīt tikai--attēlu-simbolu-failu vienreiz komandrindā. Tas ignorē-s un-S.

-rpath dir

Pievienojiet direktoriju runtime bibliotēkas meklēšanas ceļā. To izmanto, savienojot ELFexecutable ar koplietojamo objektu. Viss-rpath argumenti ir apvienoti un nodoti runtime linker, kas tos izmanto, lai atrastu koplietotos objektus runtime. The-rpath opcija tiek izmantota arī, lai atrastu kopīgus objektus, kuriem nepieciešami kopīgi objekti, kas ir skaidri norādīti saitē; skatiet aprakstu par-rpath-link iespēja. Ja-rpath neizmanto, savienojot izpildāmo ELF, vides mainīgā "LD_RUN_PATH" saturs tiks izmantots, ja tas ir definēts.

The-rpath variantu var izmantot arī SunOS. Pēc noklusējuma, SunOS, linker veidos izpildlaika meklēšanas ielāpi no visiem-L iespējas ir dota. Ja-rpath opcija tiek izmantota, izpildes laika meklēšanas ceļš tiks veidots, izmantojot tikai-rpath iespējas, ignorējot-Liespējas Tas var būt noderīgi, ja lietojat GCC, kas pievieno daudz-L opcijas, kas var būt uz NFS uzstādītajām failu sistēmām.

Saderībai ar citiem ELF linkeriem, ja-R pēc tam seko kataloga nosaukums, nevis faila nosaukums, tas tiek uzskatīts par-rpath iespēja.

-rpath-link DIR

Izmantojot ELF vai SunOS, vienai kopīgai bibliotēkai var būt nepieciešama cita. Tas notiek, ja saite "ld -shared" ietver kopīgu bibliotēku kā vienu no ievades failiem.

Ja saite saskaras ar šādu atkarību, veicot nedalītu, nemainīgi pārvietojamu saiti, tā automātiski mēģinās atrast nepieciešamo kopīgo bibliotēku un iekļaut to saiti, ja tā nav skaidri norādīta. Šādā gadījumā-rpath-link opcija norāda pirmo meklējamo direktoriju kopu. The-rpath-link opcija var norādīt direktoriju nosaukumu secību vai nu, norādot nosaukumu sarakstu, kas atdalīti ar kolonām, vai parādot vairākas reizes.

Šī opcija jāizmanto piesardzīgi, jo tā ignorē meklēšanas ceļu, kas, iespējams, ir bijis grūti apkopots dalītajā bibliotēkā. Šādā gadījumā ir nejauši iespējams izmantot citu meklēšanas ceļu, nekā to darīs saistītais izpildes laiks.

Linker izmanto šos meklēšanas ceļus, lai atrastu nepieciešamās koplietojamās bibliotēkas.

1.

Jebkurš katalogs, ko norādījis-rpath-link iespējas

2.

Jebkurš katalogs, ko norādījis-rpath iespējas Starpība starp-rpath un-rpath-link ir tas, ka norādes ir norādītas-rpath varianti ir iekļauti izpildāmajā un tiek izmantoti izpildes laikā, bet-rpath-link opcija ir efektīva tikai saites laikā. Tas attiecas tikai uz vietējo saiti.

3.

Par ELF sistēmu, ja-rpath un "rpath-link" opcijas netika izmantotas, meklējiet vides mainīgā satura "LD_RUN_PATH" saturu. Tas attiecas tikai uz vietējo saiti.

4.

Uz SunOS, ja-rpath opcija netika izmantota, meklējiet visus norādītos direktorijus, izmantojot-L iespējas

5.

Par vietējo saiti, vides mainīgā satura "LD_LIBRARY_PATH" saturu.

6.

Vietējam ELF linkeram koplietojamās bibliotēkas "DT_RUNPATH" vai "DT_RPATH" direktorijās tiek meklētas nepieciešamās koplietojamās bibliotēkas.Ieraksti "DT_RPATH" tiek ignorēti, ja ir ieraksti "DT_RUNPATH".

7.

Noklusētie direktoriji parasti / lib un / usr / lib .

8.

Attiecībā uz vietējo linkeru ELF sistēmā, ja fails /etc/ld.so.conf pastāv, šajā failā atrodamo direktoriju saraksts.

Ja nepieciešamā koplietojamā bibliotēka netiek atrasta, saite izdos brīdinājumu un turpinās ar saiti.

-dalīts

-Pārdošana

Izveidojiet kopīgu bibliotēku. To patlaban atbalsta tikai ELF, XCOFF un SunOS platformas. SunOS automātiski izveido kopīgu bibliotēku, ja-e opcija netiek izmantota, un saitē ir nedefinēti simboli.

-sort-common

Šī iespēja stāstald lai kārtotu kopējus simbolus pēc lieluma, kad tos ievieto atbilstošās izvades sadaļās. Vispirms viss viens baits simboli, tad visi divi baits, tad visi četri baitu, un tad viss pārējais. Tas ir, lai izvairītos no atšķirībām starp simboliem sakarā ar pielāgošanas ierobežojumiem.

- sadalīti pēc faila Izmērs

Līdzīgs- sadalīts pa reloc bet katram ievades failam izveido jaunu izvades sadaļu, kad Izmērs ir sasniegts. Izmērs pēc noklusējuma ir lielums 1, ja tas nav norādīts.

- sadalīts pa reloc skaits

Izmēģinājuma failā tiek mēģināts izveidot papildu sadaļas, lai neviena faila izvades sadaļa netiktu pārsniegta skaits pārvietošana. Tas ir noderīgi, ja ģenerē milzīgus pārvietojamos failus, lai lejupielādētu noteiktos reālā laika kodos ar COFF objekta faila formātu; jo COFFcannot vienā sadaļā ir vairāk nekā 65535 pārvietošanas vietas. Ņemiet vērā, ka tas nedarbosies ar objektu failu formātiem, kas neatbalsta patvaļīgas sadaļas. Linker neparadīs atsevišķas ieejas sadaļas pārdalīšanai, tādēļ, ja vienā ievades sadaļā ir vairāk nekā skaits pārvietošana vienā izlaides sadaļā būs tas, ka daudzi pārvietošanas. skaits Pēc noklusējuma vērtība ir 32768.

--stats

Aprēķināt un parādīt statistiku par linkera darbību, piemēram, izpildes laiku un atmiņas izmantošanu.

- tradicionālais formāts

Dažu mērķu gadījumā produkcijas izlaideld dažos veidos atšķiras no kāda esoša linkera produkcijas. Šis slēdzis pieprasald vietā izmantot tradicionālo formātu.

Piemēram, SunOSld simbolu virknes tabulā apvieno dublētus ierakstus. Tas var samazināt izvades faila lielumu ar pilnu atkļūdošanas informāciju par vairāk nekā 30 procentiem. Diemžēl SunOS "dbx" programma nevar nolasīt izveidoto programmu ("gdb" nav problēmu). The- tradicionālais formāts slēdzis stāstald nesadalīt dublētus ierakstus.

--sekcijas sākums sadaļas nosaukums = org

Atrodiet sadaļu izejas failā pēc absolūtās adreses org . Šo opciju varat izmantot tik reižu, cik nepieciešams, lai komandrindā atrastu vairākas sadaļas. org jābūt vienam heksadecimālam veselam skaitlim; Saderībai ar citiem linkeriem jūs varat izlaist vadošo0x parasti saistīta ar heksadecimālo vērtību. Piezīme: starp atstarpēm nedrīkst būt atstarpes sadaļas nosaukums , vienāds zīme (``=''), un org .

-TBSs org

-Datums org

-Teksts org

Izmantojiet org kā sākuma adrese --- attiecīgi --- "bss", "dati" vai izejas faila segmenta "teksts" segmentā. org jābūt vienam heksadecimālam veselam skaitlim; Saderībai ar citiem linkeriem jūs varat izlaist vadošo0x parasti saistīta ar heksadecimālo vērtību.

- dll verbose

- verbose

Parādiet versijas numuruld un norādiet atbalstīto saišu emulāciju. Parādiet, kurus ievades failus var un nevar atvērt. Parādiet linkera skriptu, ko izmanto saite.

--versija-skripts = versija-scriptfile

Norādiet linkeram versijas skripta nosaukumu. To parasti izmanto, veidojot dalītas bibliotēkas, lai norādītu papildu informāciju par bibliotēkas izveides versiju heirarchiju. Šī opcija ir nozīmīga tikai ELF platformām, kas atbalsta kopīgas bibliotēkas.

--bīstams - bieži

Brīdiniet, ja kopīgais simbols ir apvienots ar citu kopīgu simbolu vai ar simbola definīciju. Unix sasaistes ļauj to nedaudz neskaidra prakse, bet linkeriem uz dažām citām operētājsistēmām nav. Šī opcija ļauj jums atrast potenciālās problēmas, apvienojot globālos simbolus. Diemžēl dažas C bibliotēkas izmanto šo praksi, tāpēc jūs varat saņemt brīdinājumus par simboliem gan bibliotēkās, gan jūsu programmās.

Ir trīs veidu globālie simboli, kas ilustrēti šeit ar C piemēriem:

int i = 1;

Definīcija, kas atrodas izvades faila inicializētajā datu sadaļā.

extern int i;

Neapstiprināta atsauce, kas nepiešķir telpu. Mainīgajam kaut kur ir jābūt definīcijai vai kopējam simbolam.

int i;

Kopējs simbols. Ja mainīgajam ir tikai viens (viens vai vairāki) kopēji simboli, tas nonāk izvades faila neinitializētā datu apgabalā. Linker apvieno vairākus kopējus simbolus vienam un tam pašam mainīgajam vienā simbolā. Ja tie ir dažāda lieluma, tas ievelk lielāko izmēru. Linker apzīmē kopīgu simbolu deklarācijā, ja ir tāda paša mainīgā definīcija.

The--bīstams - bieži Opcija var radīt piecus brīdinājumu tipus. Katrs brīdinājums sastāv no līniju pāriem: pirmais apraksta tikko parādīto simbolu, otrajā aprakstīts iepriekšējais simbols, kas sastopams ar tādu pašu nosaukumu. Viens vai abi no abiem simboliem būs kopējs simbols.

1.

Kopējā simbola iekļaušana atsaucei, jo simbols jau ir definēts.

(

): brīdinājums: kopīgs no `"pēc definīcijas tiek ignorēts (
): brīdinājums: definēts šeit

2.

Kopējā simbola pārvēršana par atsauci, jo rodas simbola vēlāka definīcija. Tas ir tāds pats kā iepriekšējā gadījumā, izņemot to, ka simboli ir sastopami citā secībā.

(

): brīdinājums: definīcija ""galvenais kopīgs (
): brīdinājums: bieži ir šeit

3.

Apvienojot kopīgu simbolu ar iepriekšējo vienāda izmēra kopējo simbolu.

(

): brīdinājums: vairākas bieži par `' (
): brīdinājums: iepriekšējais bieži ir šeit

4.

Apvienojot kopīgu simbolu ar iepriekšējo lielāko kopējo simbolu.

(

): brīdinājums: kopīgs no `"ignorē lielāka izplatība (
): brīdinājums: lielāks izplatīts ir šeit

5.

Apvienojot kopīgu simbolu ar iepriekšējo mazāko kopīgo simbolu. Tas ir tāds pats kā iepriekšējā gadījumā, izņemot to, ka simboli ir sastopami citā secībā.

(

): brīdinājums: kopīgs no `"galvenais mazāks kopīgs (
): brīdinājums: mazāks izplatīts ir šeit

--produktu konstruktori

Brīdiniet, ja tiek izmantoti visi globālie konstruktori. Tas ir noderīgs tikai dažiem objektu failu formātiem. Formātā, piemēram, COFF vai ELF, saite nespēj atklāt globālo konstruktoru izmantošanu.

- warn-multiple-gp

Brīdiniet, ja izvades failā ir nepieciešamas vairākas globālās rādītāju vērtības. Tas ir nozīmīgs tikai dažiem pārstrādātājiem, piemēram, Alfa. Konkrēti, daži pārstrādātāji ievieto lielas vērtības konstantes īpašā sadaļā. Šīs sadaļas vidū ir norādīts īpašs reģistrs (globālais rādītājs), lai konstantus varētu efektīvi ielādēt, izmantojot relatīvā adrešu režīma pamatreģistrā. Tā kā relatīvais režīms bāzlīnijā ir fiksēts un salīdzinoši mazs (piemēram, 16 biti), tas ierobežo konstanta pults maksimālo izmēru. Tādējādi lielās programmās bieži vien ir nepieciešams izmantot vairākas globālas rādītāju vērtības, lai varētu risināt visas iespējamās konstantes. Šī opcija izraisa brīdinājuma izsniegšanu ikreiz, kad notiek šis gadījums.

- reizi nedēļā

Vienīgi brīdiniet vienu reizi par katru nenoteikto simbolu, nevis vienu reizi modulī, kas attiecas uz to.

--līnija-izliekuma izlīdzināšana

Brīdiniet, ja produkcijas sadaļas adrese ir mainīta saskaņošanas dēļ. Parasti izlīdzināšanu nosaka ievades sadaļa. Adrese tiks mainīta tikai tad, ja tā nav skaidri norādīta; Tas ir, ja komanda "SECTIONS" nenosaka sadaļas sākuma adresi.

- pilnīgi arhīvs

Par katru arhīvu, kas minēts komandrindā pēc- pilnīgi arhīvs iespēja, iekļaujiet visus objekta failus arhīvā, kas atrodas saitē, nevis meklējiet nepieciešamo objektu failu arhīvu. Tas parasti tiek izmantots, lai izveidotu arhīva failu koplietojamā bibliotēkā, piespiežot katru objektu iekļaut iegūto kopīgo bibliotēku. Šo iespēju var izmantot vairāk nekā vienu reizi.

Divas piezīmes, izmantojot šo opciju no gcc: vispirms gcc nezina par šo opciju, tāpēc jums ir jāizmanto-Wl, -visu arhīvs. Otrkārt, neaizmirstiet izmantot-Wl, -no-veselu arhīvupēc arhīvu saraksta, jo gcc pievienos savu saiti ar savu arhīvu sarakstu, un jūs, iespējams, nevēlaties, lai šis karogs ietekmētu arī tos.

- aplauzt simbols

Izmantojiet iesaiņojuma funkciju simbols . Jebkura nenoteikta atsauce uz simbols tiks nolemts "__wrap_symbol". Jebkura nenoteikta atsauce uz "__real_symbol" tiks atrisināta līdz simbols .

To var izmantot, lai nodrošinātu iesaiņojumu sistēmas funkcijai. Iesaiņojuma funkcijai jābūt nosauktai "__wrap_symbol". Ja tas vēlas izsaukt sistēmas funkciju, tas jālieto kā "__ real_symbol".

Šeit ir niecīgs piemērs:

anulēts * __wrap_malloc (int c) {printf ("malloc sauc ar% ld n", c); atgriezties __real_malloc (c); }

Ja jūs saistīt citu kodu ar šo failu, izmantojot- iesaiņot malloc, tad visi zvani uz "malloc" izsauks funkciju "__wrap_malloc". Zvans uz "__real_malloc" ar "__wrap_malloc" izsauks reālo "malloc" funkciju.

Jūs varat arī nodrošināt "__real_malloc" funkciju, lai saites bez- aplauzt iespēja gūs panākumus. Ja jūs to izdarīsit, nevajadzētu ievietot "__ real_malloc" definīciju tajā pašā datnē kā "__wrap_malloc"; ja jūs to izdarīsit, montētājs var atrisināt zvanu, pirms linkeram ir iespēja ietvert to uz "malloc".

--enable-new-dtags

--disable-new-dtags

Šis saites elements var radīt jaunus dinamiskus tagus ELF. Bet vecākās ELF sistēmas, iespējams, tos nesaprot. Ja norādāt--enable-new-dtags, dinamiskās atzīmes tiks izveidotas pēc nepieciešamības. Ja norādāt--disable-new-dtags, jauni dinamiskie tagi netiks izveidoti. Pēc noklusējuma jaunie dinamiskie tagi netiek izveidoti. Ņemiet vērā, ka šīs opcijas ir pieejamas tikai FORF sistēmām.

I386 PE saite atbalsta-dalīts kas izraisa dinamiski saistītu bibliotēku (DLL), nevis normālu izpildāmo failu. Ja izmantojat šo opciju, jums jānorāda izlaide "* .dll". Turklāt saite pilnībā atbalsta standarta "* .def" failus, kurus var norādīt saišu komandrindā, piemēram, objekta failā (faktiski pirms arhīvu izveides tā eksportē no simboliem, lai nodrošinātu, ka tie ir saistīti, tāpat kā parasts objekta fails).

Papildus visiem mērķiem kopīgām opcijām i386 PE saite atbalsta papildu komandrindas opcijas, kas ir raksturīgas i386 PE mērķim. Iespējas, kuras ņem vērtības, var atdalīt no to vērtībām, izmantojot atstarpi vai vienādu zīmi.

- add-stdcall-alias

Ja norādīts, simboli ar stdcall piedēkli (@ nn ) tiks eksportēts kā tāds, kā arī ar sufiksu noņemt.

- pamatfails fails

Izmantojiet fails kā faila nosaukums, kurā saglabāt visu pārvietošanu, kas nepieciešami, lai ģenerētu DLL dlltool .

- dll

Izveidojiet DLL, nevis regulāru izpildāmo failu. Jūs varat arī izmantot-dalīts vai norādiet "BIBLIOTĒKU" konkrētā failā ".def".

--enable-stdcall-fixup

--disable-stdcall-fixup

Ja saite atrod simbolu, kuru nevar atrisināt, tā centīsies veikt `` izplūdušo saites '', meklējot citu definētu simbolu, kas atšķiras tikai ar simbola nosaukuma formātu (cdecl vs stdcall) un atrisinās šo simbolu, saistot uz maču. Piemēram, nenoteiktais simbols "_foo" var būt saistīts ar funkciju "_foo @ 12", vai nenoteikts simbols "_bar @ 16" var būt saistīts ar funkciju "_bar". Ja saite to dara, tas izdrukā brīdinājumu, jo parasti tam nevajadzēja saistīt, bet dažkārt no trešo personu DLL izveidotajām bibliotēkām var importēt, lai šī funkcija būtu izmantojama. Ja norādāt--enable-stdcall-fixup, šī funkcija ir pilnībā iespējota un brīdinājumi netiek iespiesti. Ja norādāt--disable-stdcall-fixup, šī funkcija ir atspējota, un šādas nesakritības tiek uzskatītas par kļūdām.

- Eksportēt visus simbolus

Ja tiek dota, DLL tiek eksportēti visi globālie simboli objektos, ko izmanto, lai izveidotu DLL. Ņemiet vērā, ka šis ir noklusējums, ja citādi nebūtu eksportēto simbolu. Ja simbolus nepārprotami eksportē, izmantojot DEF failus vai netieši eksportē, izmantojot funkciju atribūtus, pēc noklusējuma neeksportē neko citu, ja vien šī opcija nav dota. Ņemiet vērā, ka simboli "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12" un "impure_ptr" netiks automātiski eksportēti. Arī no citiem DLL importētiem simboliem netiks atkārtoti eksportēts, kā arī nebūs simboli, kas norādītu DLL iekšējo izkārtojumu, piemēram, tos, kas sākas ar "_head_" vai beidzas ar "_iname". Turklāt netiek eksportēti simboli no libgcc, libstd ++, libmingw32 vai crtX.o. Simboli, kuru nosaukumi sākas ar "__rtti_" vai "__builtin_", netiks eksportēti, lai palīdzētu ar C ++ DLL. Visbeidzot, ir plašs cygwin-privāto simbolu saraksts, kurus neeksportē (protams, tas attiecas uz cigwin mērķu DLL veidošanu).

Šie cigwin-izņēmumi ir šādi: _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 "un" environ ".

--izslēgt-simbolus simbols , simbols ,…

Norāda simbolu sarakstu, kurus nevajadzētu eksportēt automātiski. Simbolu nosaukumus var norobežot ar komatiem vai kolu.

--izslēgt-libs lib , lib ,…

Norāda arhīvu bibliotēku sarakstu, no kuriem simbolus nevajadzētu eksportēt automātiski. Bibliotēkas nosaukumus var norobežot ar komatiem vai kolu. Norādot "--exclude-libs ALL", automātiskās eksporta gadījumā netiek iekļauti simboli visās arhīvu bibliotēkās. Neatkarīgi no šīs opcijas joprojām tiek eksportēti simboli, kas ir skaidri norādīti .def failā.

--file-izlīdzināšana

Norādiet faila saskaņošanu. Faila sadaļas vienmēr sāksies ar faila starpībām, kas ir šī numura daudzkārtnes. Šis noklusējums ir 512.

--vaiga rezervē

--vaiga rezervē , izdarīt

Norādiet atmiņas apjomu, ko vēlaties rezervēt (un pēc izvēles izdarīt), lai to izmantotu kā šīs programmas pilni. Noklusējums ir rezervēts 1 MB, 4K izdarīts.

- image-bāze vērtība

Izmantojiet vērtība kā jūsu programmas vai dll pamata adrese. Šī ir viszemākā atmiņas vieta, kas tiks izmantota, kad jūsu programma vai dll tiks ielādēta. Lai samazinātu nepieciešamību pārcelt un uzlabot jūsu DLL veiktspēju, katrai no tām ir jābūt unikālai bāzes adresei, un tā nedrīkst pārklāties ar citām DLL. Noklusējums ir 0x400000 izpildāmajiem failiem un 0x10000000 - dll failiem.

- Kill-at

Ja tiek dota, stdcall sufiksi (@ nn ) tiks izvilkta no simboliem pirms to eksportēšanas.

- lielākā attēlu versija vērtība

Nosaka lielāko "attēlu versijas" numuru. Noklusējums ir 1.

-major-os-versija vērtība

Nosaka lielāko daļu `` os versijas ''. Noklusējums ir 4.

- galvenā apakš