Linux / Unix-komento: Id

NIMI

ld - LD: n käyttäminen , GNU- linkki

SYNOPSIS

ld [ asetukset ] objfile ...

KUVAUS

ld yhdistää useita objekti- ja arkistotiedostoja, siirtää niiden tietoja ja sitoo symbolin viitteitä. Yleensä viimeinen vaihe ohjelman kokoamisessa on suorittaa ld .

ld hyväksyy Linkter Command Language -tiedostot, jotka on kirjoitettu AT & T: n Link Editor Command Language -syntaksin yläosassa, jotta linkitysprosessille saadaan selvä ja täydellinen hallinta.

Tämä man-sivu ei kuvaa komentokieltä; katso ld- merkintä "info" tai käsikirja ld: GNU- linkki, saadaksesi täydelliset tiedot komentokielestä ja muista GNU-linkkereistä.

Tämä ld- versio käyttää yleiskäyttöisiä BFD-kirjastoja objektiedostoihin. Tämä sallii ld : n lukea, yhdistää ja kirjoittaa objektitiedostoja useissa eri muodoissa - esim. COFF tai "a.out". Eri formaatteja voidaan liittää yhteen minkä tahansa käytettävissä olevan objektiedoston tuottamiseksi.

Sen joustavuuden lisäksi GNU-linkki on hyödyllisempi kuin muut linkit tarjoavat diagnostisia tietoja. Monet linkerit hylkäävät suorituksen välittömästi virheen kohdalla; aina kun se on mahdollista, ld jatkaa suorittamista, jolloin voit tunnistaa muita virheitä (tai joissakin tapauksissa saada tulostustiedosto virheestä huolimatta).

GNU linkkeri ld: n on tarkoitus kattaa laaja valikoima tilanteita ja olla mahdollisimman yhteensopiva muiden linkkereiden kanssa. Tämän seurauksena sinulla on monia valintoja sen käyttäytymisen hallitsemiseksi.

VAIHTOEHDOT

Linkkikanta tukee lukuisia komentorivivalintoja , mutta varsinaisessa käytännössä niitä harvoin käytetään missä tahansa erityisessä kontekstissa. Esimerkiksi ld: n usein tapahtuva käyttö on yhdistää standardin Unix-objektiedostoja vakiomuotoiseen, tuettuun Unix-järjestelmään . Tällaisessa järjestelmässä tiedoston linkittäminen "hello.o":

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

Tämä kertoo ld: lle tuottavan tiedoston, jonka nimi on "linkki" /lib/crt0.o "hello.o" ja kirjaston "libc.a", joka tulee tavallisista hakuhakemistoista. (Katso jäljempänä -l- vaihtoehtoa koskeva keskustelu.)

Jotkut ld : n komentorivivaihtoehdoista voidaan määrittää komentorivin missä tahansa kohdassa. Tiedostot, kuten -l tai -T , tarkoittavat vaihtoehtoja, jotka aiheuttavat tiedoston lukemisen siinä vaiheessa, kun vaihtoehto näkyy komentorivillä, suhteessa objektitiedostoihin ja muihin tiedostoasetuksiin. Jos ei-tiedoston vaihtoehdoilla toisella argumentilla on toista vaihetta, sillä ei ole enää vaikutusta tai ohittaa kyseisen vaihtoehdon aikaisemmat esiintymät (jotka ovat vasemmalla komentorivillä). Alla olevissa kuvauksissa on lueteltu vaihtoehtoja, jotka voidaan määritellä mielekkäästi useammin kuin kerran.

Muut vaihtoehdot ovat objektiedostoja tai arkistoja, jotka on yhdistettävä toisiinsa. Ne voivat seurata, edeltää tai sekoittaa komentorivivalintoihin paitsi, että objektitiedosto-argumenttia ei voi sijoittaa vaihtoehdon ja sen argumentin väliin.

Yleensä linkkeriä kutsutaan vähintään yhdellä objektitiedostolla, mutta voit määrittää muita binaaritiedostojen muotoja -l- , -R- ja komentosarjan komentokieltä. Jos yhtäkään binääritulotiedostoa ei ole määritetty, linkkeri ei tuota mitään tuottoa ja antaa viestin Ei syöttötiedostoja .

Jos linkkeri ei tunnista objektitiedoston muotoa, se olettaa, että se on linkkikoodi. Tällä tavalla määritetty komentosarja lisää linkin yhteydessä käytettävän linkin tärkein linkkikoodi (joko oletussynkronointikirjoitus tai määritetty -T ). Tämä ominaisuus sallii linkittäjän linkityksen tiedostoon, joka näyttää objektilta tai arkistosta, mutta itse asiassa vain määrittelee joitain symboliarvoja tai käyttää muita "INPUT" - tai "GROUP" -merkkejä muiden kohteiden lataamiseen. Huomaa, että käsikirjoituksen määrittäminen tällä tavalla vain lisää pääliitinkäsikirjoitusta; käytä -T- vaihtoehtoa korvaamaan oletuslinkkakirjaskriptin kokonaan.

Vaihtoehtojen, joiden nimet ovat yksi kirjain, vaihtoehtoisten argumenttien on joko noudatettava optiokirjainta puuttumatta välilyönteihin tai annettava erillisinä argumentteina välittömästi sen edellyttämän vaihtoehdon jälkeen.

Vaihtoehdoista, joiden nimet ovat useampia kirjaimia, joko yksi tai kaksi viivaa voi edeltää vaihtoehtoa; esimerkiksi -trace-symboli ja -raja-symboli ovat vastaavia. Huomaa - tässä säännössä on yksi poikkeus. Useita kirjainvaihtoehtoja, jotka alkavat pienellä kirjaimella "o", voidaan edetä vain kahdella viivalla. Tämä on vähentää sekaannusta -o- vaihtoehdon kanssa. Joten esim. -magic asettaa lähtötiedoston nimen taikuudelle, kun taas --magic asettaa NMAGIC-lippun lähdölle.

Useita kirjaimia koskevat argumentit on joko erotettava vaihtoehtoisesta nimestä tasa-arvoisella merkillä tai annettava erillisinä argumentteina välittömästi sen jälkeen, kun niitä vaaditaan. Esimerkiksi - traka-symboli foo ja -trace-symbol = foo ovat vastaavia. Monimerkkisten vaihtoehtojen nimet lyhenevät.

Huomaa - jos linkkeriä kutsutaan epäsuorasti kääntäjäohjaimen (esim. Gcc ) kautta, kaikkien linkkikohtaisten komentorivivaihtoehtojen on oltava valmiiksi -Wl: llä (tai mikä tahansa, joka on sopiva kyseiselle kääntäjäohjaimelle) kuten tämä:

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

Tämä on tärkeää, koska muussa tapauksessa kääntäjäohjainohjelma voi hiljaa pudottaa linkkiasetukset, mikä johtaa huonoon linkkiin.

Tässä on GNU-linkkeri hyväksytty yleisten komentorivivalitsimien taulukko:

- avainsana

Tämä vaihtoehto tukee HP / UX-yhteensopivuutta. Avainsana- argumentin on oltava yksi merkkijonoarkisto , jaettu tai oletusarvo . -arkisto on funktionaalisesti ekvivalentti -bastaattiselle , ja kaksi muuta avainsanaa ovat toiminnallisesti samanarvoisia kuin -bdynamiikka . Tätä vaihtoehtoa voidaan käyttää useita kertoja.

- Arkkitehtuuri

- arkkitehtuuri = arkkitehtuuri

Nykyisessä ld- versiossa tämä vaihtoehto on hyödyllinen vain Intel 960 -arkkitehtuuriryhmälle. Tässä ld- konfiguraatiossa arkkitehtuurimalli yksilöi 960-perheen erityisen arkkitehtuurin, mikä mahdollistaa joitain suojauksia ja muokkaa arkistokirjaston hakupolkua.

Ld: n tulevat julkaisut saattavat tukea samanlaisia ​​toimintoja muille arkkitehtuuriperheille.

-b -tulomuoto

--format = syöttömuoto

ld voidaan konfiguroida tukemaan useampaa kuin yhtä erilaista objektitiedostoa. Jos ld on konfiguroitu tällä tavalla, voit käyttää -b- vaihtoehtoa määrittämään binäärimuodon tulosobjektitiedostoille, jotka seuraavat tätä vaihtoehtoa komentoriviltä. Vaikka ld on konfiguroitu tukemaan vaihtoehtoisia esitysmuotoja, sinun ei tarvitse yleensä määrittää tätä, koska ld: n pitää olla määritetty oletuksena syötemuotoon, joka on tavallisin formaatti kussakin koneessa. syöttömuoto on tekstijono, BFD-kirjastojen tukema tietyn muoto. (Voit listata käytettävissä olevat binäärimuodot objdump -i: lla .)

Voit halutessasi käyttää tätä vaihtoehtoa, jos linkit tiedostoihin epätavallisella binäärimuodolla. Voit myös käyttää -b vaihtaa formaatteja nimenomaisesti (kun yhdistät eri tiedostomuotoja sisältäviä objektitiedostoja), mukaan lukien -b syöttöformaatti ennen kunkin objektitiedostojen ryhmän tietyssä muodossa.

Oletusmuoto otetaan ympäristömuuttujasta "GNUTARGET".

Voit myös määrittää syöteformaatin käsikirjoituksesta käyttämällä komentoa "TARGET";

-c MRI-komentojono

--mri-script = MRI-komentojono

Yhteensopivuus MRI: n tuottamien linkkereiden kanssa ld hyväksyy komentotiedostot, jotka on kirjoitettu vaihtoehtoisella, rajoitetulla komentokielellä, joka on kuvattu GNU ld -dokumentaation MRI-yhteensopivissa komentotiedostoissa. Esittele MRI-komentotiedostot, joissa on vaihtoehto -c ; käytä -T- vaihtoehtoa yleisten ld- skriptikielten kirjoittamien linkkikirjoitusten suorittamiseen . Jos MRI-cmdfilea ei ole olemassa, ld etsii sitä kaikissa -L- asetuksissa määritetyissä hakemistoissa.

-D

-DC

-DP

Nämä kolme vaihtoehtoa ovat vastaavia; useita lomakkeita tuetaan yhteensopivuuden muiden linkkereiden kanssa. He antavat tilaa tavallisille symboleille, vaikka uudelleensijoitettava ulostulotiedosto olisi määritelty ( -r ). Komentosarjalla "FORCE_COMMON_ALLOCATION" on sama vaikutus.

-merkintä

--entry = merkintä

Käytä merkintää nimenomaisena symbolina ohjelman suorittamisen aloittamiselle eikä oletusarvon syöttökohdaksi. Jos symbolia ei ole merkitty , linkkeri yrittää jäsentää merkinnän numeroina ja käyttää sitä merkintäosoitteena (numero tulkitaan perusasetuksella 10, voit käyttää alustaan ​​16 johtavaa 0x tai johtavaa 0 perusta 8).

-E

--export dynaaminen

Kun luot dynaamisesti linkitetyn suoritustiedoston, lisää kaikki symbolit dynaamiseen symbolitietokantaan. Dynaaminen symbolitaulukko on symbolien joukko, joka näkyy dynaamisissa objekteissa ajon aikana.

Jos et käytä tätä vaihtoehtoa, dynaaminen symbolitietue sisältää yleensä vain ne symbolit, joihin joku linkissä mainittu dynaaminen objekti viittaa.

Jos käytät "dlopen" -ohjelmaa dynaamisen objektin lataamisessa, jonka täytyy viitata ohjelman määrittelemien symboleiden sijaan johonkin muuhun dynaamiseen objektiin, sinun on luultavasti käytettävä tätä vaihtoehtoa yhdistettäessä itse ohjelmaa.

Voit myös käyttää versiokäsikirjoitusta hallitsemaan, mitä symbolia olisi lisättävä dynaamiseen symbolitietokantaan, jos tulostusmuoto tukee sitä. Katso versiota --version-kirjoituskuva @ ref {VERSION}.

-EB

Linkki big-endian kohteisiin. Tämä vaikuttaa oletustulostusmuotoon.

-EL

Linkitä vähän endian-esineitä. Tämä vaikuttaa oletustulostusmuotoon.

-f

- aulialainen nimi

Kun luot ELF-jaetun objektin, aseta sisäinen DT_AUXILIARY-kenttä määritettyyn nimeen. Tämä kertoo dynaamiselle linkkereille, että jaetun objektin symbolitietokanta tulee käyttää apuna suodattimeksi jaetun objektin nimen symbolitaulukossa.

Jos myöhemmin linkität ohjelman tämän suodatusobjektin kanssa, silloin, kun suoritat ohjelman, dynaaminen linkki näkee DT_AUXILIARY-kentän. Jos dynaaminen linkki ratkaisee minkä tahansa symbolin suodatinobjektista, se tarkistaa ensin onko määritetty määritetty jaetun objektin nimi . Jos on olemassa yksi, sitä käytetään suodatusobjektin määritelmän sijaan. Jaettua objektin nimeä ei tarvitse olla olemassa. Siten yhteistä objektin nimeä voidaan käyttää tarjoamaan tiettyjen toimintojen vaihtoehtoinen toteutus, ehkäpä virheenkorjausta tai konekohtaista suorituskykyä varten.

Tämä vaihtoehto voidaan määrittää useammin kuin kerran. DT_AUXILIARY-merkinnät luodaan järjestyksessä, jossa ne näkyvät komentorivillä.

-F- nimi

--suodattimen nimi

Kun luot ELF-jaetun objektin, aseta sisäinen DT_FILTER-kenttä määritettyyn nimeen. Tämä kertoo dynaamisesta linkkeriä, että luodun jaetun objektin symbolitaulukko on käytettävä suodattimen kanssa jaetun objektin nimen symbolitaulukossa.

Jos myöhemmin linkit ohjelmaan tätä suodatusobjektia vastaan, silloin, kun suoritat ohjelman, dynaaminen linkki näkee DT_FILTER-kentän. Dynaaminen linkkeri ratkaisee symbolit suodatusobjektin symbolitaulukon mukaan tavalliseen tapaan, mutta se tosiasiallisesti liitetään jaetun objektin nimen määritelmiin . Siten suodatinobjektia voidaan käyttää valitsemaan objektin nimen tarjoamien symbolien osajoukko.

Jotkut vanhat linkit käyttivät -F- vaihtoehtoa koko kokoamisen työkaluketjussa objektitiedostomuodon määrittämiseksi sekä tulo- että lähtöobjekti-tiedostoille. GNU-linkki käyttää tähän tarkoitukseen muita mekanismeja: -b , -format , -oformat- vaihtoehdot, linkkikoodeissa oleva TARGET-komento ja GNUTARGET-ympäristömuuttuja. GNU-linkki ohittaa -F- vaihtoehdon, kun ei luoda ELF-jaettua objektia.

-fini- nimi

Kun luot ELF-suoritustiedoston tai jaetun objektin, soita NAME, kun suoritettava tai jaettu kohde on purettu, asettamalla DT_FINI toiminnon osoitteeseen. Oletusarvoisesti linkkeri käyttää kutsun "_fini" -toimintoa.

-g

Huomiotta. Edellyttää yhteensopivuutta muiden työkalujen kanssa.

-G- arvo

--gpsize = arvo

Määritä optimoidun objektin maksimikoko GP-rekisterin avulla kokoon . Tämä on vain merkityksellistä esineiden tiedostomuodoille kuten MIPS ECOFF, joka tukee suurien ja pienten esineiden sijoittamista eri osioihin. Tätä ei oteta huomioon muiden objektien tiedostomuodoissa.

-h nimi

-soname = nimi

Kun luot ELF-jaetun objektin, aseta sisäinen DT_SONAME -kenttä määritettyyn nimeen. Kun suoritustiedosto on yhdistetty jaettuun kohteeseen, jolla on DT_SONAME-kenttä, silloin kun suoritustiedostoa ajetaan, dynaaminen linkki yrittää ladata DT_SONAME-kentän määrittämän jaetun objektin sen sijaan, että käytät linkkeriin annettua tiedostonimeä.

-i

Suorita inkrementaalinen linkki (sama kuin option -r ).

-init- nimi

Kun luot ELF-suoritustiedoston tai jaetun objektin, soita NAME, kun suoritettava tai jaettu kohde on ladattu, asettamalla DT_INIT toiminnon osoitteeseen. Oletusarvoisesti linkkeri käyttää kutsutaan "_init".

-l- arkisto

- kirjasto = arkisto

Lisää arkistotiedosto arkistoon linkitetyille tiedostoille. Tätä vaihtoehtoa voidaan käyttää useita kertoja. ld etsii sen polku-luettelon "libarchive.a": n esiintymista varten jokaiselle määritetylle arkistolle .

Järjestelmissä, jotka tukevat jaettuja kirjastoja, ld voi myös etsiä kirjastoja, joilla on laajennuksia kuin ".a". Erityisesti ELF- ja SunOS-järjestelmissä ld etsii hakemistoa kirjastolle, jossa on ".so" -laajennus, ennen kuin haet ".a" -laajennusta. Yleensä ".so" -alku osoittaa yhteistä kirjastoa.

Linkki etsii arkiston vain kerran, sijainnissa, jossa se on määritetty komentoriville. Jos arkisto määrittää symbolin, joka oli määrittelemätön joissakin esineissä, jotka ilmestyivät komentorivin arkistoon, linkkeri sisältää asianmukaiset tiedostot arkistosta. Kuitenkin määrittelemätön symboli objektissa, joka ilmestyy myöhemmin komentoriville, ei aiheuta linkkeri etsiä arkistoa uudelleen.

Katso - ( vaihtoehtona tapa pakottaa linkki etsiä arkistoja useita kertoja.

Voit luetella saman arkiston useita kertoja komentoriviltä.

Tämä arkistotyön haku on standardi Unix-linkkereille. Jos käytät ld onAIXia, huomaa, että se eroaa AIX-linkkeri käyttäytymisestä.

-L etsijä

- kirjasto-polku = searchdir

Lisää polku searchdir luetteloon polut, jotka ld etsii arkistokirjastoja ja ld- ohjauskäsikirjoituksia. Voit käyttää tätä vaihtoehtoa useita kertoja. Hakemistoja etsitään siinä järjestyksessä kuin ne on määritetty komentorivillä. Komentorivillä määritetyt hakemistot etsitään ennen oletushakemistoja. Kaikki -L- asetukset koskevat kaikkia -l- vaihtoehtoja riippumatta siitä, missä järjestyksessä optiot näkyvät.

Jos searchdir alkaa "=", niin "=" korvataan sysroot-etuliitteellä , joka määritetään linkin määrittämisen yhteydessä.

Oletusarvoisesti etsitty polku (ilman määritettyä -L ) riippuu siitä, mikä emulointitila ld käyttää ja joissakin tapauksissa myös sen konfiguroinnissa.

Reitit voidaan myös määrittää linkkikoodilla, jossa on "SEARCH_DIR" -komento. Tällä tavoin määritetyt hakemistot etsitään siinä kohdassa, missä linkkikoodi näkyy komentorivillä.

-m emulointi

Emuloida emulointiliitintä . Voit luetella käytettävissä olevat emulaatiot --verbose tai -V vaihtoehtoja.

Jos -m- vaihtoehtoa ei käytetä, emulointi otetaan LDEMULATION-ympäristömuuttujasta, jos se on määritelty.

Muuten oletusemulointi riippuu linkkeriasetuksen määrittämisestä.

-M

--print-kartta

Tulosta linkkikartta vakiotulokseen. Linkkikartta antaa tietoja linkistä, mukaan lukien seuraavat:

*

Jos objektitiedostot ja -symbolit kartoitetaan muistiin.

*

Kuinka yleiset symbolit kohdennetaan.

*

Kaikki linkin sisältämät arkistoon kuuluvat jäsenet, joissa mainitaan arkistossa olevan jäsenen tuominen symboli.

-n

--nmagic

Katkaise sivukohdistuksen kohdat ja merkitse ulostulo "NMAGIC", jos mahdollista.

-N

--omagic

Aseta tekstin ja datan osat lukemaan ja kirjoittamaan. Älä myöskään liitä sivusuuntaista tietosegmenttiä ja estä linkittämistä jaettuja kirjastoja vastaan. Jos tulostusmuoto tukee Unix-tyyppisiä taikuusnumeroita, merkitse ulostulo "OMAGIC".

--no-omagic

Tämä vaihtoehto hylkää suurimman osan N- vaihtoehdon vaikutuksista. Se asettaa tekstiosion vain luettavaksi ja pakottaa datasegmentin olevan sivusuuntautunut. Huomaa - tämä vaihtoehto ei salli yhdistää jaettuja kirjastoja. Käytä tätä varten -Bdynamic .

-o lähtö

--output = lähtö

Käytä lähtöä nimellä ld: n tuottama ohjelma; Jos tätä vaihtoehtoa ei ole määritetty, nimi a.out käytetään oletusarvoisesti. Komentotiedoston "OUTPUT" voi myös määrittää tulostetiedoston nimen.

-O tasolle

Jos taso on suurempi kuin nolla, ld optimoi ulostulon. Tämä saattaa kestää huomattavasti kauemmin, joten sen pitäisi todennäköisesti olla käytössä vain lopullisessa binaarissa.

-q

--emit-relocs

Jätä siirrettävät osat ja sisällöt täysin kytkettyihin exececutable-laitteisiin. Lähetyslinkin analyysi- ja optimointityökalut voivat tarvita näitä tietoja, jotta voidaan suorittaa oikeita muutoksia suoritettaviin tiedostoihin. Tämä johtaa suurempaan suoritettavaan tiedostoon.

Tätä vaihtoehtoa tuetaan tällä hetkellä vain ELF-alustoilla.

-r

--relocateable

Luo siirrettävissä oleva lähtö --- eli tuottamaan tulostustiedosto, joka puolestaan ​​voi toimia tulona ld: lle . Tätä kutsutaan usein osittaiseksi linkittämiseksi . Sivuvaikutuksena Unixin taitolukuja tukevissa ympäristöissä tämä vaihtoehto asettaa myös lähtötiedoston taika-arvon "OMAGIC". Jos tätä asetusta ei ole määritetty, tuotetaan absoluuttinen tiedosto. Kun linkität C ++ -ohjelmat, tämä vaihtoehto ei ratkaise viittauksia konstruktoreihin. tehdä niin, käytä -Ur .

Kun syöttötiedostona ei ole samaa formaattia kuin tulostustiedosto, osittainen linkitys tuetaan vain, jos kyseisellä syöttötiedostolla ei ole siirtoja. Erilaisilla tulostusmuodoilla voi olla muita rajoituksia; esimerkiksi jotkut "a.out" -pohjaiset muodot eivät tue osittaista linkittämistä muiden formaattien syöttötiedostoihin lainkaan.

Tämä vaihtoehto on sama kuin -i .

-R- tiedostonimi

--just-symbols = tiedostonimi

Lue symbolien nimet ja niiden osoitteet tiedostonimestä , mutta älä siirrä sitä uudelleen tai lisää se tulostimeen. Tämä sallii sinun lähdetiedoston viittaavan symbolisesti absoluuttisiin muistipaikkoihin muissa ohjelmissa. Voit käyttää tätä vaihtoehtoa useammin kuin kerran.

Jos yhteensopivuus muiden ELF-linkkien kanssa on mahdollista, jos -R- vaihtoehtoa seuraa hakemiston nimi, eikä tiedostonimiä, sitä käsitellään -rpath- vaihtoehtona.

-S

--strip-all

Poistetaan kaikki symbolitiedot lähtötiedostosta.

-S

--strip-debug

Poista virheenkorjaussymbolin tiedot (mutta ei kaikki symbolit) tulostustiedostosta.

-t

--jäljittää

Tulosta tulotiedostojen nimet ld käsittelee ne.

-T komentotiedosto

--script = komentotiedosto

Käytä komentosarjaa komentosarjana. Tämä käsikirjoitus korvaa ld : n oletuslinkkikirjoitusohjelman (sen sijaan, että lisäisi sitä), joten komentorivillä on määritettävä kaikki, mitä tarvitaan tulostiedoston kuvaamiseen. Jos komentotiedostoa ei ole nykyisessä hakemistossa, "ld" etsii sitä edellisten -L- asetusten määrittämissä hakemistoissa. Useita -T- vaihtoehtoja kertyy.

-u- symboli

--undefined = symboli

Voimakuvake, joka syötetään tulostustiedostoon määrittelemättömänä symbolina. Näin voi esimerkiksi käynnistää ylimääräisten moduulien yhdistäminen tavallisiin kirjastoihin. -u voidaan toistaa useilla vaihtoehtoisilla argumentteilla lisäämään lisää määrittelemättömiä symboleja. Tämä vaihtoehto vastaa "EXTERN" linkkikirjoituskomentoa.

-Ur

Muille kuin C ++ -ohjelmille tämä vaihtoehto vastaa -r : se tuottaa siirrettävän ulostulon --- eli tulostustiedoston, joka puolestaan ​​voi toimia tulona ld: lle . Kun yhdistät C ++ -ohjelmia, -Ur ratkaisee viittauksia konstruktoreihin, toisin kuin -r . Se ei toimi käyttää -Ur tiedostoja, jotka olivat itse yhteydessä -Ur ; kun konstruktion taulukko on rakennettu, sitä ei voi lisätä. Käytä -Ur vain viimeistä osittaista linkkiä varten ja -r muille.

--unique [= OSA ]

Luo erillisen ulostulo-osan jokaiselle SECTION- osion mukaiselle syöttöosalle tai jos vapaaehtoisen joukkovelkakirjalainan SECTION- argumentti puuttuu, jokaisen orpoteostuloryhmän osalta. Harvinaisluku on sellainen, jota ei ole erikseen mainittu linkkikirjoitusohjelmassa. Voit käyttää tätä vaihtoehtoa useita kertoja komentorivillä. Se estää syöttöosien normaalin yhdistämisen samalta nimeltään, mikä ohjaa linkkikirjoitusosion pääteosionäytteitä.

-v

--versio

V

Näytä versionumero ld: lle . -V- vaihtoehto myös luetellaan tuetut emulaatiot.

-x

--discard-all

Poista kaikki paikalliset symbolit.

X

--discard-paikalliset

Poista kaikki väliaikaiset paikalliset symbolit. Useimmille kohteille tämä on kaikki paikalliset symbolit, joiden nimet alkavat L: llä .

-y- symboli

--trace-symbol = symboli

Tulosta kunkin linkitetyn tiedoston nimi, jossa symboli tulee näkyviin. Tätä vaihtoehtoa voidaan antaa useita kertoja. Monissa järjestelmissä on tarpeen esitellä alaviiva.

Tämä vaihtoehto on hyödyllinen, kun linkissä on määrittelemätön symboli, mutta et tiedä mistä viittaus on peräisin.

-Y polku

Lisää polku oletushakemiston hakupolkuun. Tämä vaihtoehto on olemassa Solaris-yhteensopivuudelle.

-z avainsana

Tunnetut avainsanat ovat "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "nyt", "alkuperät", "combreloc", "nocombreloc" ja "nocopyreloc ". Muut avainsanat jätetään huomiotta Solaris-yhteensopivuudelle. "initfirst" merkitsee objektin, joka alustetaan ensimmäisellä aikavälillä ennen muita kohteita. "interpose" merkitsee objektia, jonka symboli taulukko seisoo ennen kaikkia symboleita, mutta ensisijainen suoritettava. "loadfltr" tarkoittaa objektia, että sen filtees käsitellään välittömästi ajon aikana. "nodefaultlib" merkitsee objektia, jonka tämän kohteen riippuvuuksien haku jättää huomiotta mikä tahansa oletushakemiston hakupolku. "nodelete" tarkoittaa, että objektia ei saa purkaa ajon aikana. "nodlopen" merkitsee objektia, jota ei ole saatavilla "dlopen". "nodump" merkitsee sitä, että objektia ei voida "dldump" -tiedostoon. "nyt" merkitsee objektin ei-laiska runtime-sitomalla. "alkuperää" merkitsee, että kohde voi sisältää $ ORIGIN. "defs" estää määrittelemättömät symbolit. "muldefs" sallii useita määritelmiä. "combreloc" yhdistää useita reloc-osioita ja lajittelee ne dynaamisten symbolien haun välimuistiin.

"nocombreloc" estää useiden reloc-osien yhdistämisen. "nocopyreloc" poistaa kopiolähettimien tuottamisen.

- ( arkistot -)

--start-ryhmän arkistot - -ryhmä

Arkistojen tulee olla arkistotiedostojen luettelo. Ne voivat olla joko nimenomaisia ​​tiedostonimiä tai -l vaihtoehtoja.

Määritettyjä arkistoja etsitään toistuvasti, kunnes uusia, määrittelemättömiä viitteitä ei luoda. Tavallisesti arkistoa etsitään vain kerran siinä järjestyksessä kuin se on määritetty komentoriville. Jos arkistossa oleva symboli tarvitaan ratkaisemaan määrittelemätön symboli, jonka kohde viittaa arkistossa, joka näkyy myöhemmin komentorivillä, linkki ei pysty ratkaisemaan viittausta. Ryhmittämällä arkistot etsitään niitä toistuvasti, kunnes kaikki mahdolliset viittaukset ratkaistaan.

Tämän vaihtoehdon käytöllä on huomattavat suorituskykykustannukset. On parasta käyttää sitä vain, jos kahden tai useamman arkiston välillä on väistämättömiä pyöreitä viittauksia.

--accept-tuntematon-panos-kaari

--no Hyväksy-tuntematon-panos-kaari

Kertoo linkkeri hyväksyy syöttötiedostot, joiden arkkitehtuuria ei tunnisteta. Oletus on se, että käyttäjä tietää, mitä he tekevät ja aikoo tahallaan linkittää näihin tuntemattomiin syöttötiedostoihin. Tämä oli linkittäjän oletuskäyttäytyminen ennen versiota 2.14. Oletusarvoinen käyttäytyminen julkaisusta 2.14 lähtien on hylätä tällaiset syöttötiedostot, joten " accept-unknown-input-arch" -vaihtoehto on lisätty vanhan käyttäytymisen palauttamiseksi.

- varmista avainsana

Tätä vaihtoehtoa ei oteta huomioon SunOS-yhteensopivuudesta .

-Bdynamic

-dy

-call_shared

Linkki dynaamisiin kirjastoihin. Tämä on vain merkityksellistä alustoille, joilla jaettuja kirjastoja tuetaan. Tämä vaihtoehto on yleensä oletus tällaisilla alustoilla. Tämän vaihtoehdon vaihtoehdot ovat yhteensopivia eri järjestelmien kanssa. Voit käyttää tätä vaihtoehtoa useita kertoja komentorivillä: se vaikuttaa kirjaston etsintään -l- vaihtoehdoista, jotka seuraavat sitä.

-Bgroup

Aseta DF_1_GROUP-lippu dynaamisessa osiossa "DT_FLAGS_1". Tämä aiheuttaa runtime linkkeriä käsittelemään hakuja tässä objektissa ja sen riippuvuudet suoritetaan vain ryhmän sisällä. - no-undefined on epäsuora. Tämä vaihtoehto on vain merkityksellinen ELF-alustoilla, jotka tukevat jaettuja kirjastoja .

-Bstatic

DN

-non_shared

-staattinen

Älä liitä jaettuja kirjastoja. Tämä on vain merkityksellistä alustoille, joilla jaettuja kirjastoja tuetaan. Tämän vaihtoehdon vaihtoehdot ovat yhteensopivia eri järjestelmien kanssa. Voit käyttää tätä vaihtoehtoa useita kertoja komentorivillä: se vaikuttaa kirjaston etsintään -l- vaihtoehdoista, jotka seuraavat sitä.

-Bsymbolic

Luodessasi jaettua kirjastoa, sitouduta viittauksia maailmanlaajuisiin symboleihin määritetyn haun mukaan jaetussa kirjastossa. Yleensä on mahdollista, että jokin ohjelma, joka on yhdistetty jaettuun kirjastoon, ohittaa määrityksen jaetun kirjaston sisällä. Tämä vaihtoehto on vain merkityksellinen ELF-tukijärjestelmissä, jotka tukevat jaettuja kirjastoja.

--check-osat

--no-check-osat

Pyytää linkkiä olemaan tarkastamaan osion osoitteet sen jälkeen, kun heidät on osoitettu, onko olemassa päällekkäisyyksiä. Normaalisti linkki suorittaa tämän tarkistuksen, ja jos se löytää päällekkäisyydet, se tuottaa sopivat virheilmoitukset. Linkki ei tiedä ja tekee päästöoikeuksien osia päällysmerkinnöissä. Oletuskäyttäytyminen voidaan palauttaa komentorivivalitsimella - tarkista kappaleet .

--cref

Luo ristiviittaustaulukko. Jos linkkikarttatiedostoa luodaan, ristiviittaustaulukko tulostetaan karttatiedostoon. Muussa tapauksessa se tulostetaan vakiotulosteeseen.

Taulukon muoto on tarkoituksellisesti yksinkertainen, jotta se voidaan helposti käsitellä käsikirjoituksella tarvittaessa. Symbolit tulostetaan, lajitellaan nimen mukaan. Jokaisesta symbolista annetaan tiedostonimiä koskeva luettelo. Jos symboli on määritetty, ensimmäinen lueteltu tiedosto on määritelmän sijainti. Jäljellä olevat tiedostot sisältävät viittauksia symboliin.

--no määritellä-common

Tämä vaihtoehto estää osoitinten osoittamisen yleisiin symboleihin. Komentosarjalla "INHIBIT_COMMON_ALLOCATION" on sama vaikutus.

"Ei -määritellä-yhteinen" -vaihtoehto mahdollistaa päätöksen erottamisen yhteyksien osoittamiseen yhteyksien valitsemiseksi tulostustiedoston tyypistä; muuten ei-Relocatable output -tyyppiset voimat määräävät osoitteet yhteisiin symboleihin. Käyttämällä --no-define-common -toimintoa voidaan käyttää yhteisiä tunnuksia, jotka on viitattu jaettuun kirjastoon osoitettaviin osoitteisiin vain pääohjelmaan. Tämä poistaa käyttämättömät kopiointitilat jaetun kirjaston ja estää mahdolliset sekaannukset väärien kopioiden ratkaisemiseen, kun on olemassa monia dynaamisia moduuleja, joilla on erikoistuneita hakupolkuja runtime-symbolien resoluutiolle.

--defsym symboli = ilmaus

Luo maailmanlaajuinen symboli tulostustiedostossa, joka sisältää lausekkeen absoluuttisen osoitteen. Voit käyttää tätä valintaa niin monta kertaa kuin tarpeen useiden symbolien määrittämiseksi komentoriviltä. Rajoitettu aritmeettinen muoto tukee tässä yhteydessä ilmaisua : voit antaa heksadesimaalivakion tai olemassa olevan symbolin nimen tai käyttää heksadesimaalisten vakiojen tai symbolien lisäämistä tai vähentämistä "+" ja "-". Jos tarvitset tarkempia lausekkeita, harkitse linkkikomentokielen käyttämistä komentosarjasta. Huomaa: ei saa olla valkoista tilaa symbolin , yhtäläisen merkin (`` = '') ja ilmaisun välillä .

--demangle [= tyyli ]

--no-demangle

Nämä vaihtoehdot ohjaavat, haittaavatko symbolien nimet virheviesteissä ja muissa lähdöissä. Kun linkkeriä kehotetaan purkamaan, se yrittää esittää symbolien nimet luettavasti: se leikkaa johtavat alareunat, jos niitä käytetään objektitiedostomuodossa ja muuntaa C ++: n hajonneiden symbolien nimet käyttäjän luettavissa oleviin nimiin. Eri kääntäjillä on erilaiset haarautustyypit. Valinnaisen demangling-tyylin argumenttia voidaan käyttää kääntäjän sopivan demangling-tyylin valitsemiseen. Linkkeri vaimentaa oletusarvoisesti, ellei ympäristömuuttujaa COLLECT_NO_DEMANGLE asetettu. Näitä vaihtoehtoja voidaan käyttää oletusarvon ohittamiseen.

- dynamiikan linkkitiedosto

Aseta dynaamisen linkittäjän nimi. Tämä on tarkoituksenmukaista vain, kun luodaan dynaamisesti linkitetyt ELF-suoritustiedostot. Oletusarvoinen dynaaminen linkkeri on normaalisti oikea; älä käytä tätä, ellet tiedä, mitä teet.

--embedded-relocs

Tämä vaihtoehto on merkityksellinen vain yhdistettäessä MIPS-upotettua PIC-koodia, jonka -membedded-pic -vaihtoehto tuottaa GNU-kääntäjälle ja kokoonpanijalle. Se aiheuttaa linkkeri luoda taulukko, jota voidaan käyttää ajon aikana, jotta siirretään kaikki tiedot, jotka oli staattisesti alustettu osoittimien arvoiksi. Katso lisätietoja koodista testsuite / ld-empic.

--fatal-varoitukset

Käsittele kaikkia varoituksia virheinä .

--force-exe-pääte

Varmista, että tulostustiedostossa on .exe-välilehti.

Jos onnistuneesti luotu täydellisesti yhdistetty tulostustiedosto ei ole " .exe " tai " .dll " -liite, tämä vaihtoehto pakottaa linkkeri kopioimaan tulostustiedoston samaan nimiin ".exe" -tiedostoilla. Tämä vaihtoehto on hyödyllinen käytettäessä modifioimattomia Unix- määritystiedostoja Microsoft Windows -asemalla, koska jotkin Windows- versiot eivät näytä kuvaa, ellei se pääty ".exe" -tiedostoon.

--no-gc-profiilit

--gc-osat

Ota käyttöön käyttämättömien syöttöosien roskat. Se jätetään huomiotta kohteille, jotka eivät tue tätä vaihtoehtoa. Tämä vaihtoehto ei ole yhteensopiva -r : n kanssa eikä sitä saa käyttää dynaamisen linkityksen kanssa. Oletuskäyttäytyminen (tämän roskakokoelman suorittamatta jättäminen) voidaan palauttaa määrittämällä --no-gc-osat komentoriviltä.

--auta

Tulosta yhteenveto komentorivin vaihtoehdoista vakiotulosteesta ja poistumisesta.

--target-help

Tulosta yhteenveto kaikista kohdekohtaisista vaihtoehdoista vakiotulosteessa ja poistumisessa.

-Karttahakematiedosto

Tulosta linkkikartta tiedoston karttakansioon . Katso yllä olevan M- vaihtoehdon kuvaus.

--no-keep-muisti

ld tavallisesti optimoi nopeuden muistin käytöllä tallentamalla muistitiedostojen symbolitauluja. Tämä vaihtoehto kertoo ld : n sijaan optimoi muistin käytön, lukemalla symbolitiedot tarpeen mukaan. Tämä voi olla tarpeen, jos ld loppuu muistitilasta yhdistettäessä suurta suoritustiedostoa.

--no-määrittelemätön

-z defs

Normaalisti, kun luodaan ei-symbolinen jaettu kirjasto, määrittelemättömät symbolit sallitaan ja runtime loader ratkaisee. Nämä vaihtoehdot estävät tällaiset määrittelemättömät symbolit.

--allow-multiple-määritelmä

-z muldefs

Normaalisti, kun symboli on määritetty useita kertoja, linkkeri raportoi kuolemaan johtaneen virheen. Nämä vaihtoehdot mahdollistavat useita määritelmiä ja käytetään ensimmäistä määritelmää.

--allow-shlib-määrittelemättömän

Salli määrittelemättömät symbolit jaetuissa objekteissa, vaikka --no-undefined on asetettu. Nettotulos on se, että tavallisissa kohteissa määrittelemät symbolit aiheuttavat edelleen virheen, mutta ei-määritettyjä symboleja jaetuissa objekteissa jätetään huomiotta. No_undefinedin toteutus tekee olettamukseksi, että runtime linkkeri torjuu määrittelemättömillä symboleilla. On kuitenkin olemassa ainakin yksi järjestelmä (BeOS), jossa määrittelemättömät symbolit jaetuissa kirjastoissa ovat normaaleja, koska ydin korjaa ne latausaikana valitsemaan mikä toiminto sopii parhaiten nykyiseen arkkitehtuuriin. IE valitsee dynaamisesti sopivan memset-toiminnon. Ilmeisesti on myös normaalia, että HPPA-jaetut kirjastot ovat määrittelemättömiä symboleja.

--no-määrittelemätön-versio

Normaalisti kun symboli on määrittelemätön versio, linkkeri jättää sen huomiotta. Tämä vaihtoehto estää symbolit, joissa on määrittelemätön versio, ja sen sijaan annetaan virheellinen virhe.

--no-varoittaa-epäsuhta

Normaalisti ld antaa virheen, jos yrität yhdistää syöttötiedostoja, jotka eivät ole yhteensopivia jostain syystä, ehkä siksi, että ne on koottu erilaisille prosessoreille tai eri endiannesses. Tämä vaihtoehto kertoo ld: lle, että se pitäisi äänettömästi sallia tällaiset mahdolliset virheet. Tätä vaihtoehtoa saa käyttää vain varoen, jos olet tehnyt joitain erityistoimia, jotka varmistavat linkkeri-virheiden olevan sopimattomia.

--no-koko-arkisto

Poista koko arkiston vaihtoehdon vaikutus myöhemmille arkistotiedostoille.

--noinhibit-exec

Säilytä suoritettava ulostulo tiedosto aina, kun se on vielä käyttökelpoinen. Yleensä linkkeri ei tuota tulostustiedostoa, jos se havaitsee virheitä linkkiprosessin aikana. se poistuu kirjoittamasta tulostustiedostoa, kun se antaa minkä tahansa virheen.

-nostdlib

Ainoastaan ​​kirjastojen hakemistoja, jotka on nimenomaisesti määritetty komentorivillä. Linkkriprojekteissa määritetyt kirjastohakemistot (mukaan lukien komentorivillä määritetyt linkkikirjoitukset) jätetään huomiotta.

--formaatiotulostusmuoto

ld voidaan konfiguroida tukemaan useampaa kuin yhtä erilaista objektitiedostoa. Jos ld on konfiguroitu tällä tavalla, voit käyttää --oformat- vaihtoehtoa määrittämään binäärimuodon tulosobjekti- tiedostolle. Vaikka ld on määritetty tukemaan vaihtoehtoisia esitysmuotoja, sinun ei tarvitse yleensä määrittää tätä, koska ld: n pitäisi olla määritetty tuottamaan oletuslähtöformaatti tavallisin formaatti kussakin koneessa. output-format on tekstijono, BFD-kirjastojen tukema tietyn muoto. (Voit listata käytettävissä olevat binäärimuodot objdump -i: lla .) Komentosarjan komento "OUTPUT_FORMAT" voi myös määrittää tulostusmuodon, mutta tämä vaihtoehto ohittaa sen.

-qmagic

Tätä vaihtoehtoa ei oteta huomioon Linuxin yhteensopivuuden vuoksi.

-Qy

Tätä vaihtoehtoa ei oteta huomioon SVR4-yhteensopivuuden vuoksi.

--rentoutua

Vaihtoehto, jossa on koneesta riippuvia vaikutuksia. Tätä vaihtoehtoa tuetaan vain muutamalla tavoitteella.

Joillakin alustoilla - relax- vaihtoehto suorittaa globaaleja optimointeja, jotka ovat mahdollisia, kun linkkeri ratkaisee ohjelman osoittamisen, kuten rentouttavia osoitetiloja ja uusien ohjeiden syntetisointia lähtöobjekti- tiedostossa.

Joillakin käyttöympäristöillä nämä linkit-aikaiset globaalit optimoinnit saattavat tehdä tuloksena olevan suoritettavan ohjelman symbolisen virheenkorjauksen mahdottomaksi. Tämä tiedetään tapahtuvan Matsushita MN10200- ja MN10300-prosessorien tapauksessa.

Alustoilla, joissa tätä ei tueta, - relax hyväksytään, mutta sitä ei oteta huomioon.

--retain-symbols-file tiedostonimi

Säilytä vain tiedostonimen tiedostossa luetellut symbolit, hylkäämällä kaikki muut. tiedostonimi on yksinkertaisesti litteä tiedosto, jossa on yksi symboli per rivi. Tämä vaihtoehto on erityisen hyödyllinen ympäristöissä (kuten VxWorks), joissa suuri globaali symbolitietokanta kertyy vähitellen, jotta se säästää ajaa-aikaista muistia.

-retain-symbols-tiedosto ei hylkää määrittelemättömiä symboleja tai siirtämiseen tarvittavia symboleja.

Voit vain määrittää --retain-symbolit-tiedoston kerran komentorivillä. Se ohittaa -s ja -S .

-rpath dir

Lisää hakemisto runtime library -hakusivulle. Tätä käytetään, kun kytket ELF: n ja muiden jaettujen objektien välisen yhteyden. Kaikki -rpath- argumentit ketjutetaan ja siirretään runtime linkkeriin, joka käyttää niitä ja etsii jaetut objektit ajon aikana. -rpath- vaihtoehtoa käytetään myös yhteisten objektien etsimisessä, joita tarvitaan linkin sisältämien jaettujen objektien yhteydessä; katso -rpath-link -vaihtoehdon kuvaus. Jos -rpathia ei käytetä yhdistettäessä ELF-suoritustiedostoa, ympäristömuuttujan "LD_RUN_PATH" sisältöä käytetään, jos se on määritetty.

-rpath- vaihtoehtoa voidaan käyttää myös SunOS: ssä. Oletuksena SunOS: ssä linkkeri muodostaa runtime-hakulausekkeen kaikista annetuista -L- vaihtoehdoista. Jos käytät -rpath- vaihtoehtoa, runtime-hakupolu muodostetaan yksinomaan -rpath- vaihtoehdoin, jolloin -L- asetukset jätetään huomiotta. Tämä voi olla hyödyllistä, kun käytetään gcc: tä, joka lisää useita -L- vaihtoehtoja, jotka voivat olla onFS-asennetut tiedostojärjestelmät.

Jos yhteensopivuus muiden ELF-linkkien kanssa on mahdollista, jos -R- vaihtoehtoa seuraa hakemiston nimi, eikä tiedostonimiä, sitä käsitellään -rpath- vaihtoehtona.

-rpath-link DIR

Kun käytät ELF: ää tai SunOSia, yksi jaettu kirjasto voi vaatia toisen. Näin tapahtuu, kun "ld-jakajana" -yhteys sisältää jaetun kirjaston yhdeksi syöttötiedostoiksi.

Kun linkittäjä tapaa tällaisen riippuvuuden, kun hän tekee ei-jaettua, ei-siirrettävää linkkiä, hän yrittää automaattisesti etsiä tarvittavan jaetun kirjaston ja sisällyttää sen linkkiin, ellei sitä sisällytetä nimenomaisesti. Tällöin -rpath-link- vaihtoehto määrittää ensimmäiset haetut hakemistot. -rpath-link- vaihtoehto voi määrittää hakemistomerkkien sarjan joko määrittämällä nimet, jotka on erotettu kaksoispisteillä tai jotka näkyvät useita kertoja.

Tätä vaihtoehtoa tulee käyttää varoen, koska se ohittaa hakupolun, joka on ehkä vaikeasti koottu jaettuun kirjastoon. Tällaisessa tapauksessa on mahdollista käyttää tahattomasti eri hakupolkua kuin runtime linkkeri tekisi.

Linkki käyttää seuraavia hakupolkuja löytääkseen tarvittavat jaetut kirjastot.

1.

Kaikki -rpath-link- vaihtoehdoissa määritetyt hakemistot.

2.

Kaikkien -rpath- vaihtoehtojen määrittelemät hakemistot. -rpath- ja -rpath-linkin välinen ero on, että -rpath- vaihtoehtojen määrittelemät hakemistot sisältyvät suoritettavaan tiedostoon ja käytetään rytmissä, kun taas -rpath-link- vaihtoehto on tehokas vain linkin aikana. Se on vain natiivi linkkeri.

3.

Jos ELF-järjestelmässä ei käytetä -rpath- ja "rpath-link" -vaihtoehtoja, etsi ympäristömuuttujan sisältö "LD_RUN_PATH". Se on vain natiivi linkkeri.

4.

SunOS: ssä, jos -rpath- vaihtoehtoa ei käytetä, etsi kaikki -L- asetuksilla määritetyt hakemistot.

5.

Natiiviliitännän osalta ympäristömuuttujan sisältö "LD_LIBRARY_PATH".

6.

Luonnollisen ELF-linkkeriä varten jaetun kirjaston "DT_RUNPATH" tai "DT_RPATH" -hakemistot etsitään sen tarvitsemia jaettuja kirjastoja. DT_RPATH-merkinnät jätetään huomiotta, jos DT_RUNPATH-merkinnät ovat olemassa.

7.

Oletus hakemistot, normaalisti / lib ja / usr / lib .

8.

Jos ELF-järjestelmässä on alkuperäinen linkki, jos tiedostossa /etc/ld.so.conf on olemassa, kyseisessä tiedostossa löytyvien hakemistojen luettelo.

Jos vaadittua jaettua kirjastoa ei löydy, linkki antaa varoituksen ja jatkaa linkkiä.

-shared

-Bshareable

Luo jaettu kirjasto. Tätä tuetaan tällä hetkellä vain ELF-, XCOFF- ja SunOS-alustoilla. SunOS: ssa linkki luo automaattisesti jaetun kirjaston, jos -e- vaihtoehtoa ei käytetä ja linkissä on määrittelemättömiä symboleja.

--sort-common

Tämä vaihtoehto kertoo ld : n lajittelevaksi tavallisiksi symboleiksi koon mukaan, kun ne sijoittavat ne asianmukaisiin tulostusosiin. Ensin tulee kaikki yhden tavun symbolit, sitten kaikki kaksi tavua, sitten kaikki neljä tavua ja sitten kaikki muu. Tämä on vältettävä yhtälöiden välisten aukkojen välisiä aukkoja.

--kokoinen tiedosto [ koko ]

Samankaltainen kuin --split-by-reloc, mutta luo uuden ulostulo-osan kullekin tulotiedostolle, kun koko on saavutettu. koko on oletusarvoisesti 1 koko, jos sitä ei anneta.

--laskenta-reloc [ count ]

Yritetään luoda ylimääräisiä osioita tulostetiedostossa, joten tiedostossa ei ole yhtään tuotososaa enemmän kuin laskutoimituksia . Tämä on hyödyllistä tuotettaessa valtavia uudelleensijoitettavia tiedostoja ladattavaksi tiettyihin reaaliaikaisiin ytimiin COFF-objektiedostomuodolla; koska COFFcannot edustaa yli 65535 siirtoa yhdestä osasta. Huomaa, että tämä ei toimi objektitiedostomuodoilla, jotka eivät tue mielivaltaisia ​​osioita. Linkkeri ei jakaa yksittäisiä syöttöjaksoja uudelleenjakoon, joten jos yhdellä syöteosalla on enemmän kuin laskea uudelleensijoituksia, yksi tulososa sisältää useita siirtoja. laskea oletuksena arvo 32768.

--stats

Lasketaan ja näytetään linkkimen toimintaa koskevat tilastot, kuten toteutusaika ja muistin käyttö.

--traditional-formaatti

Joidenkin kohteiden osalta ld: n tuotos on eräillä tavalla erilainen kuin jonkin olemassa olevan linkkimen tuotos. Tämä kytkin pyytää ld käyttämään perinteistä muotoa sen sijaan.

Esimerkiksi SunOS, ld yhdistää päällekkäiset merkinnät symbolin merkkijono taulukkoon. Tämä voi pienentää tulostustiedoston koon täydellä virheenkorjaustiedoilla yli 30 prosentilla. Valitettavasti SunOS "dbx" -ohjelma ei voi lukea tuloksena olevaa ohjelmaa ("gdb" ei ole ongelma). --Traditional-format- kytkin kertoo ld: lle , ettei yhdistää päällekkäisiä merkintöjä.

--section-start sectionname = org

Etsi osiot, jotka ovat lähtötiedostossa org : n antamassa absoluuttisessa osoitteessa. Voit käyttää tätä vaihtoehtoa niin monta kertaa kuin tarvitaan, jotta voit etsiä useita osioita komentoriviltä. org on oltava yksi heksadesimaalinen kokonaisluku; yhteensopivuutta muiden linkkereiden kanssa, voit jättää johtavan 0x: n, joka yleensä liittyy heksadesimaaliarvoihin. Huomaa: ei pitäisi olla välilyöntiä osion nimen , yhtäläisen merkin (`` = '') ja orgin välillä .

-Tbss org

-Tdata org

-Tekstiorganisaatio

Käytä org aloitusosoitteena --- vastaavasti --- "bss", "data" tai "teksti" segmentti tulostus tiedosto. org on oltava yksi heksadesimaalinen kokonaisluku; yhteensopivuutta muiden linkkereiden kanssa, voit jättää johtavan 0x: n, joka yleensä liittyy heksadesimaaliarvoihin.

--dll-monisanainen

verbose

Näytä ld: n versionumero ja lue linkitetyt emulaatiot tuetuille. Näyttää, mitä syöttötiedostoja voi ja ei voida avata. Näytä linkkikirjoittajan linkkikirjoitus.

--version-script = version-scriptfile

Määritä version skriptin nimi linkkeriin. Tätä käytetään tyypillisesti luodessasi jaettuja kirjastoja lisäämällä tietoja luodun kirjaston version heirarkiasta. Tämä vaihtoehto on vain merkityksellinen ELF-alustoilla, jotka tukevat jaettuja kirjastoja.

--warn-common

Varoitus, kun yhteinen symboli on yhdistetty toiseen yleiseen symboliin tai symbolien määrittelyyn. Unix-linkit sallivat tämän hieman epätyydyttävän käytännön, mutta linkkereita joissakin muissa käyttöjärjestelmissä ei. Tämän vaihtoehdon avulla voit löytää mahdollisia ongelmia maailmanlaajuisten symbolien yhdistämisestä. Valitettavasti jotkut C-kirjastot käyttävät tätä käytäntöä, joten saatat saada joitakin varoituksia kirjastojen symboleista sekä ohjelmista.

Kolme erilaista maailmanlaajuista symbolia kuvataan tässä C-esimerkissä:

int i = 1;

Määritelmä, joka menee lähtötiedoston alustettuun tietoosiosiin.

extern int i;

Määrittelemätön viittaus, jossa ei ole tilaa. Jokaiselle muuttujalle on määritettävä määritelmä tai yhteinen symboli.

int i;

Yhteinen symboli. Jos vain yksi muuttuja (yksi tai useampi) on yhteisiä symboleja, se siirtyy tulosteen tiedostolle, joka ei ole alustettu. Linkki yhdistää samat muuttujat useille yhteisille symboleille yhdeksi symboliksi. Jos ne ovat eri kokoisia, se valitsee suurimman koon. Linkki muodostaa yhteisen symbolin julistukseen, jos sama muuttuja on määritelty.

--warn-common -vaihtoehto voi tuottaa viisi erilaista varoitusta. Jokainen varoitus koostuu viivaparista: ensimmäinen kuvataan juuri kohdatun symbolin ja toinen kuvaa edellistä symbolia, jolla on sama nimi. Yksi tai molemmat kaksi symbolia ovat yhteinen symboli.

1.

Yhteisen symbolin kääntäminen viitteeksi, koska symboli on jo määritelty.

(
): varoitus: yhteinen ` 'ohitetaan määritelmällä (
): varoitus: määritelty tässä

2.

Yhteisen symbolin kääntäminen viitteeksi, koska symboliin tulee myöhemmin määritelmä. Tämä on sama kuin edellinen tapaus, paitsi että symboleja esiintyy eri järjestyksessä.

(
): varoitus: ` 'määritelmä yleinen (
): varoitus: yleinen on täällä

3.

Yhdistämällä yhteinen symboli edellisellä samankokoisella yhteisellä symbolilla.

(
): varoitus: useita yhteisiä ` ' (
): varoitus: edellinen yhteinen on täällä

4.

Yhteisen symbolin yhdistäminen aiempaan ylempään yhteiseen symboliin.

(
): varoitus: yleinen ` 'ohittaa suurempi common (
): varoitus: suurempi yhteinen on täällä

5.

Yhteisen symbolin yhdistäminen edelliseen pienempään yhteiseen symboliin. Tämä on sama kuin edellinen tapaus, paitsi että symboleja esiintyy eri järjestyksessä.

(
): varoitus: yhteinen ` 'pakollinen pienempi yhteinen (
): varoitus: pienempi yhteinen on täällä

--warn-rakentajien

Varoita, jos käytetään maailmanlaajuisia konstruktoreita. Tämä on hyödyllinen muutamille objektiedostomuodoille. Muotoilla, kuten COFF tai ELF, linkki ei pysty havaitsemaan maailmanlaajuisten konstruktoreiden käyttöä.

--warn-multiple-gp

Varoittaa, jos tulostustiedostossa tarvitaan useampia globaaleja osoittimia. Tämä on merkityksellistä vain tietyille prosessoreille, kuten Alpha. Erityisesti jotkut prosessorit asettavat suurimittaiset vakiot erityiseen osaan. Erityinen rekisteri (globaali osoitin) osoittaa tämän osan keskelle niin, että vakiot voidaan ladata tehokkaasti perusrekisterin suhteellisen osoitustilan kautta. Koska perusrekisterin suhteellinen tila on kiinteä ja suhteellisen pieni (esim. 16 bittiä), tämä rajoittaa vakiosäiliön enimmäiskokoa. Näin ollen suurissa ohjelmissa on usein välttämätöntä käyttää useita globaaleja osoittareita, jotta kaikki mahdolliset vakiot voidaan käsitellä. Tämä vaihtoehto aiheuttaa varoituksen, kun tämä tapaus ilmenee.

--warn kerran

Vain varoittaa kerran jokaisesta määrittelemättömästä symbolista, sen sijaan, että se olisi yksi moduuli, joka viittaa siihen.

--warn-osa-tasata

Varoittaa, jos lähtöosion osoite muuttuu kohdistuksen takia. Tyypillisesti kohdistus asetetaan syöttöosalla. Osoitetta muutetaan vain, jos sitä ei nimenomaisesti määritetä. eli jos "OSOITTEET" -komento ei määritä osion aloitusosoitetta.

--whole-arkisto

Jokaiselle komentoriville mainittuun arkistoon - koko arkistovalinnan jälkeen, sisällytä jokaisen arkistossa oleva objektitiedosto linkkiin sen sijaan, että etsit arkistosta vaadittuja objektiedostoja. Tätä käytetään yleensä arkistotiedoston kääntämiseen jaettuun kirjastoon, mikä pakottaa jokaisen objektin sisällytettävään tuloksena olevaan jaettuun kirjastoon. Tätä vaihtoehtoa voidaan käyttää useammin kuin kerran.

Kaksi huomautusta, kun käytät tätä vaihtoehtoa gcc: Ensimmäinen, gcc ei tiedä tästä vaihtoehdosta, joten sinun täytyy käyttää -Wl-koko arkistointia . Toiseksi, älä unohda käyttää -Wl, -no-whole-arkistoa arkistoluettelosi jälkeen, koska gcc lisää oman linkkiluettelonsa arkistoon ja et ehkä halua, että tämä lippu vaikuttaa myös niihin.

--wrap- symboli

Käytä symbolin käärintätoimintoa. Jokainen määrittelemätön viittaus symboliin ratkaistaan ​​"__ wrap_symbol". Kaikki määrittelemätön viittaus "__real_symbol" ratkaistaan symboliksi .

Tätä voidaan käyttää kääreen aikaansaamiseksi järjestelmän toiminnolle. Kääreen toimintoa kutsutaan nimellä "__wrap_symbol". Jos se haluaa soittaa järjestelmän toimintoon, sen pitäisi soittaa "__ real_symbol".

Tässä on triviaali esimerkki:

void * __wrap_malloc (int c) {printf ("malloc kutsutaan% ld: llä \ n", c); paluu __real_malloc (c); }

Jos linkitään muihin koodiin tämän tiedoston kanssa --wrap malloc , kaikki kutsut "malloc" kutsuvat sen sijaan toiminnon "__wrap_malloc". Kutsu "__real_malloc" kohtaan "__wrap_malloc" kutsuu todellisen malloc-toiminnon.

Voit halutessasi antaa myös "__real_malloc" -toiminnon, jotta linkit, joilla ei ole --wrap- vaihtoehtoa, onnistuvat. Jos teet tämän, sinun ei pitäisi asettaa "__ real_malloc" määritelmää samaan tiedostoon kuin "__wrap_malloc"; jos et, kokoonpano voi ratkaista puhelun ennen linkkeri mahdollisuutta kääriä sen "malloc".

enable-new-dtags

--disable-new-dtags

Tämä linkki voi luoda uudet dynaamiset tunnisteet ELF: ssä. Vanhemmat ELF-järjestelmät eivät ehkä ymmärrä niitä. Jos määrität --enable-new-dtags , dynaamiset tunnisteet luodaan tarpeen mukaan. Jos määrität --disable-new-dtagit , uusia dynaamisia tunnisteita ei luoda. Oletusarvon mukaan uusia dynaamisia tunnisteita ei luoda. Huomaa, että nämä vaihtoehdot ovat käytettävissä vain ELF-järjestelmissä.

I386 PE -liitäntä tukee - jaa -vaihtoehtoa, mikä aiheuttaa lähdön olevan dynaamisesti linkitetty kirjasto (DLL) normaalin suoritettavuuden sijaan. Sinun tulisi nimetä tuotos "* .dll", kun käytät tätä vaihtoehtoa. Lisäksi linkkeri tukee täysin "* .def" -tiedostoja, jotka voidaan määritellä linkkeri komentorivillä, kuten objektitiedosto (itse asiassa sen pitäisi edeltää arkistoja, joissa se vie symboleja, varmistaakseen, että ne linkittyvät, aivan kuin tavallinen objekti tiedosto).

Kaikille tavoitteille yhteisten vaihtoehtojen lisäksi i386 PE-linkki tukee muita i386 PE -kohteeseen liittyviä komentorivivaihtoehtoja. Vaihtoehtoja, jotka ottavat arvot, voidaan erottaa arvostaan ​​joko välilyönnillä tai tasa-arvolla.

--add-stdcall-alias

Jos annetaan, symboleilla, joilla on stdcall-jälkiliite (@ nn ), viedään nimellä -en ja myös poistetulla loppuliitteellä.

--base- tiedosto

Käytä tiedostoa tiedoston nimenä, jonka avulla voit tallentaa DLL-tiedostojen generoinnille tarvittavat siirrot kaikille dlltoolille .

--dll

Luo DLL säännöllisen suorituksen sijaan. Voit myös käyttää -jakaa tai määrittää "LIBRARY" tietyssä ".def" -tiedostossa.

enable-stdcall-korjauksen,

--disable-stdcall-korjauksen,

Jos linkki löytää symbolin, jota se ei pysty ratkaisemaan, se yrittää tehdä "sumea linkittäminen" etsimällä toista määritettyä symbolia, joka eroaa vain symbolin nimen (cdecl vs stdcall) muodossa ja ratkaisee kyseisen symbolin yhdistämällä otteluun. Esimerkiksi epämääräinen symboli "_foo" voidaan liittää funktion "_foo @ 12" tai määrittelemätön symboli "_bar @ 16" voidaan liittää funktioon "_bar". Kun linkki tekee tämän, se tulostaa varoituksen, koska se ei yleensä olisi liittänyt linkkejä, mutta joskus tuodaan kolmannen osapuolen dll: eiltä tuotettuja kirjastoja, saattaa tämä ominaisuus olla käyttökelpoinen. Jos määrität --enable-stdcall-fixup , tämä ominaisuus on täysin käytössä ja varoituksia ei tulosteta. Jos määrität --disable-stdcall-fixup , tämä ominaisuus on poistettu käytöstä ja tällaisia ​​yhteensopimattomuuksia pidetään virheinä.

--export-kaikki-symbolit

Jos annetaan, kaikki DLL: n viemät DLL: n kaikkiin maailmanlaajuisiin symboleihin esineissä, joita käytetään DLL: n rakentamiseen. Huomaa, että tämä on oletusarvo, jos muuten ei olisi vietyjä symboleita. Kun symbolit viedään eksplisiittisesti DEF-tiedostojen kautta tai implisiittisesti viedään toiminto-attribuuttien kautta, oletusarvoisesti ei ole mitään muuta vientiä, ellei tätä vaihtoehtoa anneta. Huomaa, että symbolit "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12" ja "impure_ptr" eivät ole automaattisesti vietyjä. Muilta DLL-tiedostoilta tuotuja symboleja ei myöskään jälleenvietä eikä myöskään DLL: n sisäisen asettelun määritteleviä symboleja, kuten "_head_" -alkuista tai "_iname" -tiedoista. Lisäksi ei ole viitteitä "libgcc", "libstd ++", "libmingw32" tai "crtX.o" symboleista. Symbolit, joiden nimet alkavat "__rtti_" tai "__builtin_", ei viedä, jotta C ++ DLL: istä olisi apua. Lopuksi on olemassa laaja luettelo cygwin-yksityisistä symboleista, joita ei viedä (tämä koskee luonnollisesti DLL: iden rakentamista cygwin-kohteille).

Nämä cygwin-suljetut ovat: "_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 "ja" ympäristö ".

--käytä-symbolien symboli , symboli , ...

Määrittää symboliluettelon, jota ei pitäisi automaattisesti viedä. Symbolien nimet voivat olla pilkkuja tai kaksoispisteitä.

--exclude-libs lib , lib , ...

Määrittää luettelon arkistokirjastoista, joista symboleja ei pitäisi automaattisesti viedä. Kirjojen nimet voidaan rajoittaa pilkuilla tai kaksoispisteillä. "--exclude-libs ALL" määritteleminen sulkee pois kaikki arkistokirjastojen symbolit automaattisesta viennistä. .def-tiedostossa nimenomaisesti luetellut symbolit viedään edelleen, riippumatta tästä vaihtoehdosta.

--file-linjaus

Määritä tiedoston kohdistaminen. Tiedostojen jaksot alkavat aina tiedostojen siirrosta, jotka ovat tämän numeron kerrannaisia. Tämä oletusarvo on 512.

--heap reserve

--heap reserve , commit

Määritä muistin määrä, joka varataan (ja valinnaisesti sitoutetaan), jotta sitä voidaan käyttää tässä ohjelmassa. Oletusarvo on 1Mb varattu, 4K sitoutunut.

- kuvan perusarvo

Käytä arvoa ohjelman tai dll: n perusosoitteena. Tämä on pienin muistipaikka, jota käytetään, kun ohjelma tai dll on ladattu. Jotta sinun ei tarvitse siirtää ja parantaa DLL-toimintojen suorituskykyä, jokaisella on oltava ainutlaatuinen perusosoite, eikä päällekkäisiä muita dll-tiedostoja. Oletusarvo on 0x400000 suoritettaville tiedostoille ja 0x10000000 dll-tiedostoille.

--kill-at

Jos annetaan, stdcall-loppuliitteet (@ nn ) poistetaan symboleista ennen niiden vientiä.

--major-image-version arvo

Asettaa suurimman osan `` kuvamateriaalista ''. Oletuksena on 1.

--major-os-version arvo

Asettaa suurimman osan `` os-versiosta ''. Oletuksena on 4.

--major-alijärjestelmän version arvo

Asettaa suurimman osan `` alijärjestelmän versiosta ''. Oletuksena on 4.

--minor-image-version arvo

Asettaa pienen "image version" numeron. Oletusarvot ovat 0.

--minor-os-version arvo

Asettaa pienen määrän `` os-versiota ''. Oletusarvot ovat 0.

--minor-alijärjestelmän version arvo

Määrittää pienen osan `` osajärjestelmän version '' numerosta. Oletusarvot ovat 0.

--output-def tiedosto

Linkki luo tiedostokansion, joka sisältää DEF-tiedoston, joka vastaa linkin tuottamaa DLL-tiedostoa. Tätä DEF-tiedostoa (jota kutsutaan nimellä "* .def") voidaan luoda tuontikirjaston avulla "dlltool": lla tai sitä voidaan käyttää viittauksena automaattisesti tai implisiittisesti vietyihin symboleihin.

- out-implib- tiedosto

Linkkeri luo tiedostokansion, joka sisältää tuontitulkin, joka vastaa linkin tuottamaa DLL: tä. Tätä tuontitavua (jota kutsutaan "* .dll.a" tai "* .a") voidaan linkittää asiakkaita vastaan ​​generoidusta DLL: stä. Tämä käyttäytyminen tekee mahdolliseksi ohittaa erillinen "dlltool" tuontakirjaston luomisvaihe.

enable-auto-kuva-base

Valitse automaattisesti DLL-kuvapohja, ellei sitä ole määritetty käyttäen "--image-base" argumenttia. Käyttämällä dllname: stä generoitua hajautusta luodaksesi ainutlaatuiset kuvapisteet jokaiselle DLL: lle, vältytään muistin törmäyksistä ja siirroista, jotka voivat viivästyttää ohjelman suorittamista.

--disable-auto-kuva-base

Älä luo automaattisesti ainutlaatuista kuvapohjaa. Jos käyttäjä ei ole määritellyt kuvapohja ("--image-base"), käytä alustan oletusarvoa.

--dll-search-prefix- merkkijono

Kun linkitetään dynaamisesti dll: ään ilman tuontikirjastoa, etsi " .dll" etusijalle "lib .dll". Tämä käyttäytyminen mahdollistaa helpon eron eri "subplatforms" ': n, cygwin, uwin, pw jne. Varten rakennettujen DLL: ien välillä. Esimerkiksi cygwin DLL: t tyypillisesti käyttävät "--dll-search-prefix = cyg".

enable-auto-tuonti

Tee hienostunut linkki "_symboliin" "__imp__symboliksi" DAT-tuonnista DLL-tiedostoista ja luo tarvittavat salausmerkit rakennettaessa tuontikirjastoja näiden DATAexports-ohjelmien kanssa. Tämä yleensä toimii vain "- mutta joskus saatat nähdä tämän viestin:

"variable" "ei voida tuoda automaattisesti. Lue lisätietoja ld: n" --enable-auto-import "-dokumentaatiosta."

Tämä sanoma ilmenee, kun osa (ala) lausekkeesta käsittelee osoitteen, jonka lopulta annetaan kahden vakion summasta (Win32-tuontataulukot sallivat vain yhden). Tapauksia, joissa tämä voi tapahtua, sisältää pääsyn DLL: hen tuotuihin struct-muuttujien jäsenkenttiin sekä käyttämällä vakioindeksi DLL: stä tuodusta taulukkomuuttujasta. Jokainen monisana-muuttuja (ryhmät, rakenteet, pitkät jne.) Voivat laukaista tämän virheen. Huolimatta vietyjen muuttuvien muuttujien täsmällisestä tietotyypistä riippumatta ld havaitsee aina, antaa varoituksen ja poistuu siitä.

Tämän ongelman ratkaisemiseksi on useita tapoja riippumatta vietyjen muuttujien tietotyypeistä:

Yksi tapa on käyttää --enable-runtime-pseudo-reloc-kytkin. Tällöin tehtävänä on mukauttaa viittauksia asiakkaan koodiin runtime-ympäristöön, joten tämä menetelmä toimii vain, kun runtime environtment tukee tätä ominaisuutta.

Toinen ratkaisu on pakottaa jokin "vakiosta" muuttumaan - eli tuntemattomaksi ja ei-optimoivaksi kääntämisajassa. Sarjoissa on kaksi mahdollista mahdollisuutta: a) tehdä indeksihakemuksen (taulukon osoite) muuttuja, tai b) tehdä "vakio" -indeksi muuttuja. Täten:

extern tyyppi extern_array []; extern_array [1] -> {haihtuva tyyppi * t = extern_array; t [1]}

tai

extern tyyppi extern_array []; extern_array [1] -> {haihtuva int t = 1; extern_array [t]}

Rakenteille (ja useimmille muille sanoituksille) ainoana vaihtoehtona on tehdä itse rakenne (tai pitkä pitkä tai ...) muuttuja:

extern struct s extern_struct; extern_struct.field -> {haihtuva rakenne s * t = & extern_struct; t-> field}

tai

extern pitkä pitkä extern_ll; extern_ll -> {haihtuva pitkä pitkä * local_ll = & extern_ll; * local_ll}

Kolmas tapa käsitellä tätä vaikeutta on luopua "automaattisen tuonnin" rikkomisen symboli ja merkitä se "__declspec (dllimport)". Käytännössä kuitenkin edellytetään kääntämisajan #defines -työkalun käyttämistä osoittaaksenne, rakentaako DLL-tietä, luotaasi asiakastunnus, joka liittää DLL: hen tai rakentaa tai linkittää vain staattiseen kirjastoon. Kun valitset vaihtoehdoista "suoran osoitteen ja jatkuvan siirtymän" ongelman ratkaisemisen välillä, kannattaa harkita tyypillistä reaalimaailmaa:

Alkuperäinen:

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

Ratkaisu 1:

--foo.h extern int arr []; --foo.c #include "foo.h" tyhjä pää (int argc, char ** argv) {/ * Tämä kiertotapa on win32: lle ja cygwinille; älä "optimoi" * / haihtuvaa int * parr = arr; printf ( "% d \ n", poikasten [1]); }

Ratkaisu 2:

--foo.h / * Huomaa: Automaattinen vienti oletetaan (ei __declspec (dllexport)) * / #if (määritelty _WIN32) || määritelty (__ CYGWIN__)) && \! (määritelty (FOO_BUILD_DLL) || määritelty (FOO_STATIC )) #define FOO_IMPORT __declspec (dllimport) #else #define FOO_IMPORT #endif extern FOO_IMPORT int arr []; --foo.c #include "foo.h" tyhjä pää (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

Neljäs tapa välttää tämä ongelma on koodata kirjastoasi käyttämään käyttöliittymää pikemminkin kuin rikkomusmuuttujien (esim. Set_foo () ja get_foo () accessor-toiminnot).

--disable-auto-tuonti

Älä yritä tehdä sopivaa linkkiä "_symbolista" DATAimports-nimistä DLL-tiedostoja kohtaan "__imp__symbol".

enable-runtime-pseudo-reloc

Jos koodissasi on lausekkeita, jotka on kuvattu kohteessa --enable-auto-import -osiossa, eli DATA-tuonti DLL: stä, jossa ei-nolla -offset, tämä kytkin luo vektorin "runtime pseudo relocations", jota runtime-ympäristö voi käyttää viittausten tällaisiin tietoihin asiakkaasi koodissa.

--disable-runtime-pseudo-reloc

Älä luo pseudo-siirtoja muille kuin nollasta poikkeavalle DAT-tuonnille DLL-tiedostoista. Tämä on oletusarvo.

enable-extra-pe-debug

Näytä lisää virheenkorjaustietoja, jotka liittyvät automaattisen tuontisymboliin.

--section-linjaus

Määrittää osan kohdistuksen. Muistiosastot alkavat aina osoitteista, jotka ovat tämän numeron monikerta. Oletuksena 0x1000.

- varauksen varaus

- varaa varaus , sitoudut

Määritä muistin määrä, joka varataan (ja valinnaisesti sitoutetaan) käytettäväksi pinoina tässä ohjelmassa. Oletusarvo on 2Mb varattu, 4K sitoutunut.

- osajärjestelmä, joka

--systeemi, joka : pääaine

--systeemi, joka : pääaine . vähäinen

Määrittää osajärjestelmän, jolla ohjelma suoritetaan. Oikeudelliset arvot ovat "syntyperäiset", "windows", "console" ja "posix". Voit myös asettaa alijärjestelmän version myös.

Tärkeää: Käytä man- komentoa ( % man ) nähdäksesi kuinka komentoa käytetään tietyssä tietokoneessa.