Linux / Unix Hais kom ua: ID

NPE

LD - Siv LD , GNU linker

SYNOPSIS

ld [ xaiv ] objfile ...

KEV POM ZOO

ld combines ntau cov ntaub ntawv thiab cov ntaub ntawv archive, txav lawv cov ntaub ntawv thiab cov xeeb los ntawm cov cim chiv keeb. Feem ntau cov kauj ruam kawg hauv kev teev cov txheej txheem yog khiav los ua ld .

ld lees txais Linker hais kom qev Cov ntaub ntawv sau ua lus Askiv nyob rau hauv daim ntawv xov tooj AT & T 's Link Writer Language syntax, los qhia meej meej thiab tag nrho kev tswj tus txheej txheem sib txuas.

Tus txiv neej no tsis qhia txog cov lus txib; saib ld nkag hauv "info", los yog cov phau ntawv ld: GNU linker, kom paub meej txog ntawm cov lus hais kom ua thiab rau lwm yam ntawm theGNU linker.

No cov lus ntawm ld siv cov laj thawj BFD cov chaw qiv ntawv khiav lag luam ntawm cov ntaub ntawv tawm tsam. Qhov no tso cai rau ld nyeem, muab cov ntsiab lus, thiab sau cov ntaub ntawv cov ntaub ntawv rau ntau hom ntawv - piv txwv, COFF lossis "a.out". Qee hom ntawv sib txawv ua ke yuav ua ke ua ke los tsim tej yam khoom siv tawm.

Ib cag ntawm nws yooj, GNU linker pab tswv yim dua li lwm cov kev sib txuas hauv kev muab lus qhia. Muaj ntau tus neeg txuas ntxiv ua tiav sai sai thaum ntsib kev ua yuam kev; thaum twg ua tau, ld tseem ua haujlwm ntxiv, uas koj yuav qhia tau lwm tus yuam kev (los yog, qee zaus, kom tau txais cov ntaub ntawv tso zis tis ntawm qhov yuam kev).

Lub GNU linker ld txhais tau hais tias yuav tsum tau them ntau ntau zaus, thiab kom tau tshaj li lwm cov txuas nrog. Vim li ntawd, koj muaj ntau txoj hau kev los tswj nws tus cwj pwm.

XAIV

Lub linker txhawb cov plethora ntawm cov kabmob sib txuas lus , tab sis qhov kev xyaum ua ob peb ntawm lawv yog siv hauv cov ntsiab lus teb. Piv txwv li, siv cov ld nquag yog txuas tus txheem Unix kwv cov ntaub ntawv ntawm tus txheej txheem, txhawb kev Unix . Rau tej lub kaw lus, mus txuas rau cov ntaub ntawv "hello.o":

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

Qhov no qhia ld los tsim ib cov ntaub ntawv hu ua cov zis los ntawm kev txuas cov ntaub ntawv "/lib/crt0.o" nrog "hello.o" thiab lub library "libc.a", uas yuav yog los ntawm tus qauv tshawb nrhiav. (Saib qhov kev sib tham ntawm qhov kev xaiv ntawm -l hauv qab no.)

Qee qhov kev xaiv ntawm kab lus rau ld yuav raug teev nyob rau txhua qhov chaw hauv kab lus hais kom ua. Txawm li cas los xij, cov kev xaiv uas xa mus rau cov ntaub ntawv, xws li -l lossis -T , ua rau cov ntaub ntawv yuav tsum tau nyeem ntawm qhov chaw uas cov kev xaiv tshwm nyob rau ntawm kab ntawv hais kom ua, kwv yees rau cov ntaub ntawv cov khoom thiab lwm cov ntaub ntawv xaiv. Rov hais dua tsis xaiv cov kev xaiv uas muaj kev sib cav sib txawv yuav tsis muaj kev cuam tshuam ntxiv, los yog override cov xwm txheej ua ntej (cov ntxiv mus rau sab laug ntawm kab hais kom ua) ntawm qhov kev xaiv ntawd. Cov kev xaiv uas tej zaum yuav muaj lub ntsiab lus ntau tshaj ib zaug uas tau sau tseg hauv cov lus piav qhia hauv qab no.

Cov lus tsis yog-cov lus xaiv yog cov ntaub ntawv lossis cov ntaub ntawv khaws tseg uas yuav tsum tau sib txuas ua ke. Tej zaum lawv yuav ua raws, ua ntej, los sis sib xyaw nrog kev hais kom ua ntawm kab lus, tshwj tsis yog tias cov lus tsis txaus siab yuav tsis muab tso rau ntawm qhov kev xaiv thiab qhov kev sib cav.

Feem ntau qhov linker yog invoked nrog tsawg kawg ib tus kwv ua ntaub ntawv, tiam sis koj tuaj yeem qhia lwm cov ntaub ntawv ntawm binary input ntaub ntawv siv -l , -R , thiab tsab ntawv hais kom ua lus. Yog hais tias tsis muaj binary input ntaub ntawv txhua teev, linker tsis tsim cov zis, thiab teeb meem cov lus Tsis muaj cov ntaub ntawv tawm tswv yim .

Yog tias tus linker tuaj yeem tsis paub txog hom ntawv ntawm tus kwv, nws yuav muaj kev pov plob hais tias nws yog ib daim ntawv txuas txuas. Ib tsab ntawv teev lus piav qhia nyob rau hauv txoj kev no augments tsab ntawv txuas ntawm lub ntsiab txuas rau qhov kev txuas (ob qho tib si tsab ntawv txuas ntawm tsab ntawv ceeb toom los yog ib qho uas tau muab teev tseg los ntawm kev siv -T ). Cov ntawv no tso cai rau qhov txuas mus txuas rau cov ntaub ntawv uas zoo nkaus li yog ib qho khoom los yog ib qho kev kos duab, tab sis nws tsuas yog txhais cov cim qhov tseem ceeb, los yog siv "INPUT" los yog "GROUP" mus thauj lwm yam khoom. Nco ntsoov tias specifying ib tsab ntawv nyob rau hauv no txoj kev tsuas augments tsab ntawv txuas ntawm lub ntsiab; siv qhov -T xaiv los hloov lub neej ntawd linker tsab ntawv nkaus xwb.

Rau cov kev xaiv uas lawv cov npe yog ib daim ntawv, cov lus sib tham yuav tsum tau ua raws li tsab ntawv xaiv uas tsis muaj kev sib koom tes, lossis muab cov lus sib cais tam sim ntawd tom qab qhov kev xaiv uas xav tau.

Rau cov kev xaiv uas nws lub npe muaj ntau hom ntawv, xws li ib lub tsoo los yog ob qho ua ntej yuav xaiv lub npe; Piv txwv, -cov-cim-cim thiab - cim-cim yog sib npaug. Lus Ceeb Toom - muaj ib qhov tshwj rau txoj cai no. Ntau hom ntawv xaiv uas pib nrog ib rooj plaub tsawg dua 'o' tsuas yog ua ntej los ntawm ob qho kev sib tw. Qhov no yog txo qhov tsis meej pem nrog -o kev xaiv. Yog li ntawd, piv txwv -muaj txiv neej teev cov ntaub ntawv rau lub npe zais qhov tseeb uas yog - qhov qhabnias ntawm NMAGIC chij ntawm cov zis.

Kev sib ceg rau ntau hom kev xaiv yuav tsum tau muab cais tawm ntawm lub npe xaiv los ntawm ib qho kev sib npaug sib npaug, lossis muab cov lus sib cais tam sim ntawd tom qab qhov kev xaiv uas xav tau. Piv txwv, - kos cim-cim foo thiab - cim-cim-cim = foo yog qhov sib npaug. Cov cim npe ntawm ntau lub npe ntawm cov ntawv xaiv tau raug lees txais.

Lus Cim - Yog tias tus linker tau txais kev pab cuam, ntawm ib tus neeg tsav tsheb compiler (xws li gcc ) ces tag nrho cov linker hais kom ua kab xaiv yuav tsum tau ua tiav los ntawm -Wl, (los xij tsim nyog rau cov tsav tsheb compiler xyov xws li no:

gcc -Wl, - startgroup foo.o bar.o -Wl, - kawg pawg

Qhov no yog qhov tseem ceeb, vim tias tus tsav tsheb hauv tshuab compiler yuav ntsiag to ntawm cov kev xaiv txuas, uas ua rau muaj kev phem tsis zoo.

Ntawm no yog ib lub rooj ntawm cov kabmob lus sib hloov kab uas txais los ntawm GNU linker:

-a lo lus tseem ceeb

Qhov kev xaiv no txhawb kev sib tw HP / UX. Lo lus tseem ceeb ntawm kev sib tw yuav tsum yog ib qho ntawm cov hlua ntawv , sib koom , lossis ua neej tsis muaj . -cev yog qhov sib npaug rau -Bstatic , thiab lwm qhov ob lo lus tseem ceeb tshaj plaws rau -Bdynamic . Qhov kev xaiv no kuj yuav raug siv ntau lub sijhawm.

- Lub architecture

- Mim vaj tsev = architecture

Hauv kev tso tawm ntawm ld , qhov kev xaiv no tsuas pab tau rau Intel 960 tsev neeg ntawm architectures xwb. Nyob rau hauv qhov configuration ld , kev sib cav architecture qhia txog tus qauv hauv 960 tsev neeg, ua kom tau txais qee qhov kev tiv thaiv thiab kho qhov kev tshawb nrhiav hauv library-library.

Lub neej yav tom ntej ntawm ld yuav txhawb kev ua haujlwm zoo sib xws rau lwm tsev neeg cov tsev neeg.

-b input-format

--format = input-format

ld tej zaum yuav teeb tsa los txhawb ntau tshaj ib hom khoom ua ke. Yog hais tias koj tus ld yog configured li no, koj siv tau -b xaiv kom paub tseeb binary hom rau cov ntaub ntawv tawm cov ntaub ntawv uas ua raws li qhov kev xaiv no rau ntawm cov kab hais kom ua. Txawm tias thaum ld raug teeb tsa los txhawb nqa lwm tus tawm tswv yim, koj tsis yog feem ntau yuav tsum tau qhia qhov no, raws li ld yuav tsum tau teeb tsa kom pom tau hais tias yog tus qauv tawm tswv yim hom ntawv ntau hom ntawm txhua lub tshuab. input-format yog ib txoj hlua ntawv, lub npe ntawm ib hom kev txhawb los ntawm BFD cov tsev qiv ntawv. (Koj tuaj yeem sau cov ntawv qhia binary muaj objdump -i .)

Tej zaum koj yuav xav siv qhov kev xaiv no yog tias koj txuas cov ntaub ntawv nrog ib hom ntawv txawv hauv binary. Koj kuj tuaj yeem siv tau -b hloov cov hom ntawv ntsees (thaum sib txuas cov ntaub ntawv sib txawv ntawm cov ntaub ntawv sib txawv), nrog rau -b input-format ua ntej txhua pawg ntawm cov ntaub ntawv cov ntaub ntawv hauv ib hom ntawv.

Lub neej ntawd hom ntawv yog tshwm sim los ntawm qhov chaw sib txawv "GNUTARGET".

Koj tuaj yeem txhais tau hom ntawv tawm tswv yim los ntawm tsab ntawv, siv qhov "TARGET" hais kom ua;

-c MRI-commandfile

--mri-tsab ntawv = MRI-commandfile

Rau kev sib tw nrog txuas ntawm MRI, ld lees txais tsab ntawv sau ua lwm hom, txwv kev hais ua lus, tau piav nyob rau hauv MRI Compatible Script Files section ntawm GNU ld cov ntaub ntawv. Taw qhia cov ntaub ntawv MRI nrog kev xaiv -c ; siv qhov -T xaiv khiav txuas kev sib txuas lus sau rau hauv hom lus hom phiaj ld scripting. Yog hais tias MRI-cmdfile tsis muaj nyob, ld saib nws hauv cov kab lus qhia los ntawm tej kev xaiv -L .

-d

-dc

-dp

Cov kev xaiv thib peb yog sib npaug; ntau cov ntaub ntawv yog txaus siab rau compatibility nrog lwm cov linkers. Lawv muab chaw rau ntau cov cim txawm yog hais tias muaj cov ntaub ntawv tso tawm tau tawm (nrog -r ). Tsab ntawv hais kom ua "FORCE_COMMON_ALLOCATION" muaj cov nyhuv tib yam.

-e nkag

--yog = nkag

Siv nkag los ua lub cim qhia meej rau kev pib ua tiav ntawm koj qhov kev zov me nyuam, es tsis yog qhov yuam kev nkag. Yog tias tsis muaj lub cim npe nkag teb chaws , tus txuas yuav sim tau nkag teb chaws li ib tus lej, thiab siv qhov ntawd yog qhov chaw nyob (tus zauv yuav muab txhais rau hauv lub hauv paus 10, koj tuaj yeem siv tus 0x rau lub hauv paus 16, los yog ua tus coj 0 rau 8).

-E

- Hloov-dynamic

Thaum tsim tau ib qho kev sib txuas ntawm kev lag luam txuas ntxiv, ntxiv tag nrho cov cim rau lub cim rooj cim. Lub cim rooj cim yog txheej ntawm cov cim uas pom los ntawm cov khoom hauv kev khiav ntawm lub sijhawm khiav.

Yog tias koj tsis siv qhov kev xaiv no, cov cim lub cim qhia yuav muaj qhov tsuas yog cov cim uas tau hais los ntawm qee cov khoom tawm tsam hauv qhov txuas.

Yog tias koj siv "dlopen" los thauj khoom ib qho khoom tawm uas xav tau xa rov qab rau cov cim uas tau hais tseg los ntawm qhov kev pab cuam, es tsis muaj lwm yam khoom siv, ces koj yuav tau siv qhov kev xaiv no thaum txuas qhov kev pab cuam nws tus kheej.

Koj kuj tuaj yeem siv daim ntawv ntaus cim los tswj cov cim yuav tsum muab ntxiv rau cov cim lub rooj cim yog tias cov zis tawm txhawb nws. Saib cov lus piav qhia ntawm --version-tsab ntawv hauv @ {VERSION}.

-Yog

Txuas cov khoom loj loj. Qhov no cuam tshuam rau cov zis tso zis hom.

-EL

Txuas cov khoom me me. Qhov no cuam tshuam rau cov zis tso zis hom.

-f

- npe lub npe

Thaum tsim kom muaj ib qho kev sib koom ELF, teem caij nrog DT_AUXILIARY teb mus rau lub npe teev npe. Qhov no qhia txog qhov sib txuas ntawm qhov sib txuas ntawm lub cim ntawm qhov khoom sib koom yuav tsum siv los ua ib qho kev pab cuam ntawm lub cim ntawm lub npe sib koom.

Yog hais tias koj tom qab txuas ib qhov txheej txheem tiv thaiv cov khoom siv no, ces, thaum koj khiav qhov kev pab cuam, qhov dynamic txuas yuav pom DT_AUXILIARY field. Yog hais tias tus dynamic linker daws cov cim ntawm tus kwv lim, nws yuav xub xyuas seb puas muaj ib lub ntsiab txhais hauv lub npe sib koom. Yog tias muaj ib qho, nws yuav siv tsis tau lub ntsiab txhais hauv lub cuab yeej lim. Cov npe ntawm cov khoom sib koom yuav tsis muaj nyob. Yog li cov ntsiab lus sib koom siv tau muab siv los muab lwm txoj kev siv ntawm qee yam kev khiav dej num, kab tias kev debugging los yog kev siv lub tshuab kev ua haujlwm.

Qhov kev xaiv no tej zaum yuav tau teev ntau tshaj ib zaug. DT_AUXILIARY nkag yuav tsim nyob rau hauv qhov kev txiav txim uas lawv tshwm sim rau ntawm kab hais kom ua.

-F lub npe

- npe lub npe

Thaum tsim kom tau ib qho kev sib koom ELF, muab cov lus teb nrog DT_FILTER rau lub npe teev npe. Qhov no qhia txog qhov sib txuas ntawm qhov sib txuas ntawm txoj kab lus ntawm qhov khoom sib koom ua ke uas tau tsim yuav tsum raug siv los ua ib qho lim rau ntawm lub rooj cim ntawm lub npe sib koom.

Yog hais tias koj tom qab txuas ib qhov kev pab cuam tiv thaiv no lub lim khoom, ces, thaum koj khiav qhov kev pab, dynamic linker yuav pom DT_FILTER teb. Qhov dynamic linker yuav daws cov cim raws li cov lus cim ntawm lub lim khoom li niaj zaus, tab sis nws yuav ua tiag txuas rau cov ntsiab lus pom nyob hauv lub npe sib koom. Yog li cov lim khoom siv tau los xaiv lub subset ntawm cov cim uas muab los ntawm tus kwv lub npe .

Qee qhov qub txuas ntxiv siv -F kev xaiv thoob plaws hauv ib qho kev sib xyaw compilation rau specifying kwv-cov hom ntawv rau cov ntaub ntawv tawm tswv yim thiab cov zis. GNU linker siv lwm lub tswv yim rau lub hom phiaj no: -b , --format , --oformat kev xaiv, tus "TARGET" cov lus txib hauv txuas ntawv sib txuas, thiab "GNUTARGET" ib puag ncig. Tus GNU linker yuav tsis lees paub qhov -F xaiv thaum tsis tsim kom muaj kev sib koom ELF.

-tsis npe

Thaum tsim tau ib qho ELF executable los sis koom sib koom, hu NAME thaum lub twj tso tawm los yog sib koom siv tawm, los ntawm qhov DT_FINI rau qhov chaw nyob ntawm qhov kev ua. Yog vim, qhov linker siv "_fini" ua qhov ua kom hu.

-g

Txaus siab. Muab rau kev sib haum nrog lwm cov cuab yeej.

-G nqis

--gpsize = tus nqi

Teem lub siab tshaj plaws ntawm cov khoom siv kom tau muab siv GP register rau me me . Qhov no tsuas yog muaj nuj nqis rau cov ntaub ntawv tawm tsam xws li MIPS ECOFF uas txhawb nqa cov cuab yeej loj thiab khoom me me hauv ntau seem. Qhov no yog ignored rau lwm yam tawm tsam cov ntaub ntawv tawm tswv yim.

-h npe

-tshawb npe = npe

Thaum tsim tau ib qho khoom siv sib koom ELF, teem caij DT_SONAME teb mus rau lub npe teev npe. Thaum tus executable txuas rau ib yam khoom sib koom nrog DT_SONAME teb, ces thaum tus executable khiav qhov dynamic linker yuav sim ntsaws cov kwv uas tau teev tseg los ntawm DT_SONAME teb es tsis siv cov ntaub ntawv npe rau tus txuas.

-i

Ua kom muaj qhov sib txuas ntxiv (tib yam li kev xaiv -r ).

-npe lub npe

Thaum tsim kom tau ib qho ELF executable lossis sib koom ua ke, hu NAME thaum tus kwv lossis executable kwv yog nruab, los ntawm qhov teem rau DT_INIT mus rau qhov chaw nyob ntawm qhov kev ua. Yog vim li ntawd, qhov linker siv "_init" raws li txoj haujlwm hu.

-l archive

- library = archive

Ntxiv archive ntaub ntawv archive rau daim ntawv teev cov ntaub ntawv mus txuas. Qhov kev xaiv no kuj yuav raug siv ntau lub sijhawm. ld yuav tshawb nws txoj kab-sau rau cov xwm txheej ntawm "libarchive.a" rau txhua qhov chaw teev.

Ntawm lub tshuab uas txhawb cov sib qiv sib koom ua ke, ld kuj tseem yuav tshawb nrhiav cov tsev qiv ntawv nrog extensions uas tsis yog ".a". Tshwj xeeb, ntawm ELF thiab SunOS systems, ld yuav tshawb ib phau ntawv rau ib lub tsev qiv ntawv nrog kev txuas ntxiv ntawm ".so" ua ntej yuav nrhiav ib qho uas txuas nrog ".a". Ntawm convention, tus ".so" extension qhia tau tias yog ib lub tsev qiv ntawv sib koom.

Lub linker yuav tshawb ib qho archive xwb ib zaug, ntawm qhov chaw uas nws tau teev nyob rau ntawm kab hais kom ua. Yog hais tias tus kos npe rau hauv lub cim uas yog lub cim uas tsis muaj nyob hauv ib qho khoom uas tau tshwm sim ua ntej ntawm qhov kev sib txuas lus, qhov linker yuav muaj cov ntaub ntawv tsim nyog los ntawm cov archive. Txawm li cas los xij, ib lub cim undefined nyob rau hauv ib yam khoom tom qab ntawm qhov hais kom ua kab yuav tsis ua kom tus linker mus nrhiav cov archive dua.

Saib ntawm - ( qhov kev xaiv rau ib txoj hauv kev quab yuam tus txuas mus tshawb nrhiav archives ntau zaus.

Koj tuaj yeem sau cov ntawv qub tib lub sijhawm ntau ntawm cov kab hais kom ua.

Hom kev tshawb nrhiav no yog tsim rau Unix linkers. Txawm li cas los xij, yog tias koj siv ld onAIX, nco ntsoov tias nws txawv ntawm tus cwj pwm ntawm AIX linker.

-L nrhiav

- library-path = searchdir

Ntxiv kev nrhiav kom tau mus rau hauv daim ntawv teev cov paths uas ld yuav tshawb nrhiav cov tsev qiv ntawv hauv library thiab ld control scripts. Koj tuaj yeem siv qhov kev xaiv no txhua lub sijhawm. Cov kev tshawb nrhiav tau tshawb hauv qhov kev txiav txim uas lawv tau teev nyob rau ntawm kab hais kom ua. Cov kev cai tau teev nyob rau ntawm kab hais kom raug tshawb nrhiav ua ntej lub vas xaum vim. Tag nrho -L xaiv tau rau tag nrho -l kev xaiv, tsis hais txog qhov kev txiav txim uas cov kev xaiv tshwm.

Yog tias searchdir pib nrog \ "= \", ces tus \ "= \" yuav hloov los ntawm sysroot prefix , ib txoj kev teev thaum tus txuas txuas.

Lub neej tso txheej paths tshawb (tsis tau sau nrog -L ) nyob ntawm seb hom emulation hom ld siv, thiab qee zaum tseem nyob ntawm nws tau teeb tsa li cas.

Cov paths kuj yuav tau teev nyob rau hauv tsab ntawv txuas nrog "SEARCH_DIR" hais kom ua. Cov kev taw qhia tau hais meej li no yog tshawb ntawm qhov chaw uas cov ntawv txuas txuas rau hauv kab lus hais.

-m emulation

Emulate emulation linker. Koj tuaj yeem sau cov lus qhia txog kev ua haujlwm nrog - kev sib tw lossis -V kev xaiv.

Yog hais tias qhov kev xaiv -m tsis siv, qhov emulation raug rho tawm ntawm qhov "LDEMULATION" hloov mus rau qhov chaw, yog tias tau hais tseg.

Txwv tsis pub, lub neej emulation vim nyob ntawm seb tus kab txuas yog teeb tsa li cas.

-M

- luam ntawv-daim ntawv qhia

Sau ib daim ntawv qhia kev txuas mus rau tus qauv tso tawm. Ib daim ntawv qhia txuas muaj cov ncauj lus txog qhov txuas, nrog rau cov hauv qab no:

*

Qhov twg kwv cov ntaub ntawv thiab cov cim yog mapped rau hauv lub cim xeeb.

*

Yuav muab cov cim ntau npaum li cas.

*

Txhua tus tswvcuab hauv cov tswvcuab muaj nyob rau hauv qhov txuas, nrog cov lus ntawm lub cim uas ua rau cov tswvcuab hauv pawg yuav raug coj tuaj rau hauv.

-n

--nemic

Tua lub nplooj ntawv sib tw ntawm cov seem, thiab kos tus zis ua "NMAGIC" yog tias ua tau.

-N

--omagic

Teem cov ntawv nyeem thiab cov ntawv khej kom nyeem tau thiab sau tau ntawv. Tsis tas li ntawd, tsis txhob ywm phab-ntawv cov ntaub ntawv ntu, thiab lov tes taw kev sib txuas tsam ntawm cov tsev qiv ntawv. Yog hais tias cov zis tawm txhawb cov Unix style khawv koob, kos cov zis ua "OMAGIC".

- tsis yog-omagic

Qhov kev xaiv no negates feem ntau ntawm cov teebmeem ntawm -N xaiv. Nws teev cov ntawv nyeem ua lus nyeem-tsuas yog, thiab yuam cov ntawv ntaws los ua nplooj ntawv. Lus cim - qhov kev xaiv no tsis pab cuam txog kev tiv thaiv cov tsev qiv ntawv sib koom. Siv -Bdynamic rau qhov no.

-o tso zis

- tawmput = tso tawm

Siv cov zis ua lub npe rau qhov kev tsim tawm los ntawm ld ; yog qhov kev xaiv no tsis sau tseg, lub npe a.out yog siv los ntawm lub neej ntawd. Tsab ntawv hais kom ua "OUTPUT" kuj tuaj yeem qhia meej rau cov ntaub ntawv tawm lub npe.

-Tej theem

Yog hais tias qib yog qhov tseem ceeb ntawm cov zauv muaj pes tsawg tus ld optimizes cov zis. Qhov no tej zaum yuav siv sij hawm ntev dua thiab yog li ntawd tej zaum yuav tsum tsuas yog enabled rau qhov binary kawg.

-q

--emit-relocs

Tshem tawm ntawm qhov chaw thau chaw thiab cov ntsiab lus hauv cov kev sib txuas uas tau txuas nrog kev sib txuas. Kev xa ntawv txuas ntxiv thiab cov cuab yeej tawm tswv yim yuav xav tau cov ntaub ntawv no thiaj li ua tau cov kev hloov kho ntawm cov txheej txheem. Qhov no tau ua tiav loj dua.

Qhov kev xaiv no yog tam sim no tsuas yog txhawb siab ntawm ELF platforms.

-r

- chim siab

Ua kom muaj qhov tso zis ntau ntxiv --- piv txwv li, tsim kom muaj cov ntaub ntawv tso tawm uas tuaj yeem ua haujlwm rau ld . Qhov no feem ntau hu ua ib nrab txuas . Raws li ib cov nyhuv, nyob rau hauv tej cheeb tsam uas txhawb tus qauv Unix khawv koob tooj, qhov kev xaiv no kuj teev cov zis ua tus zauv khov nab npawb rau "OMAGIC". Yog tias qhov kev xaiv no tsis sau tseg, kev ua cov ntawv tsis tiav. Thaum txuas cov kev pab cuam C ++, qhov kev xaiv no yuav tsis daws cov references rau cov tuam txhab; ua li ntawd, siv -Ur .

Thaum cov ntaub ntawv tawm tswv yim tsis muaj tib yam li cov ntaub ntawv tso tawm, ib nrab txuas tsuas yog kev txhawb nqa yog tias cov ntaub ntawv tawm tsis muaj kev hloov chaw. Txawv tawm tswv yim sib txawv muaj peev xwm muaj kev txwv ntxiv; Piv txwv li qee qhov "a.out" -cased formats tsis txhawb ib nrab txuas nrog cov ntaub ntawv tawm tswv yim ua lwm hom.

Cov kev xaiv no tsis yog tib yam li -i .

-R filename

- xaiv-cim = filename

Nyeem cim lub npe thiab lawv qhov chaw nyob ntawm filename , tab sis tsis txhob tsiv nws los yog muab tso rau hauv cov zis. Qhov no tso cai rau koj cov ntaub ntawv tso tawm kom xa mus rau qhov chaw ntawm lub cim xeeb uas tau hais tseg hauv lwm cov kev pab cuam. Koj tuaj yeem siv qhov kev xaiv no ntau tshaj ib zaug.

Kev sib tw nrog lwm cov ELF linkers, yog hais tias qhov -R xaiv tau ua raws li lub npe directory, tsis yog lub npe ntawm cov ntaub ntawv, nws raug kho raws li txoj cai -rpath .

-S

- caj npab-tag nrho

Qhia tag nrho cov lus qhia ntawm cov ntaub ntawv tso tawm.

-S

- khawm-debug

Omit debugger cim qhia (tab sis tsis yog txhua lub cim) los ntawm cov ntaub ntawv tso tawm.

-t

- Hla

Sau cov npe ntawm cov ntaub ntawv cov ntaub ntawv ua ld xyum lawv.

-Tuab tsab ntawv

- ntawv sau = scriptfile

Siv scriptfile raws li tsab ntawv linker. Tsab ntawv no tau hloov cov ntawv ntawm ld lub neej ua ke (tsis txhob ntxiv rau nws), ces commandfile yuav tsum qhia txhua yam uas tsim nyog los piav qhia cov ntaub ntawv tso zis. Yog tias cov ntawv tsis muaj nyob hauv phau ntawv no, "ld" zoo li nws hauv cov kab lus uas tau teev tseg los ntawm cov kev xaiv ua ntej -L . Ntau yam -T xaiv ntau.

-u cim

--debined = cim

Quab yuam cim tau muab tso rau hauv cov ntaub ntawv tso tawm raws li lub cim undefined. Ua li no tej zaum, piv txwv, txhawj xeeb txog kev txuas ntxiv ntawm cov qauv ntxiv los ntawm cov tsev qiv ntawv. -u tej zaum yuav rov qab nrog cov kev sib txawv ntawm kev xaiv los nkag rau cov cim ntxiv tsis muaj tseeb. Qhov kev xaiv no yog sib npaug rau qhov "EXTERN" linker tsab ntawv hais kom ua.

-Ur

Rau txhua yam uas tsis yog C ++ cov kev pabcuam, qhov kev xaiv no yog sib npaug rau -r : nws ua rau cov zis khiav tawm-piv txwv li, cov ntaub ntawv tso zis uas tuaj yeem ua haujlwm rau ld . Thaum txuas C ++ cov kev pab cuam, -Ur puas tau references rau constructors, tsis zoo li -r . Nws tsis ua hauj lwm los siv -Ur ntawm cov ntaub ntawv uas lawv tus kheej txuas nrog -Ur ; thaum lub rooj constructor twb tau ua, nws tsis tau ntxiv rau. Siv -Ur tsuas yog rau qhov kawg ntawm qhov txuas, thiab -r rau lwm tus.

- qhov [[ NQE ]

Tsim ib qho kev cais tawm ntawm txhua lub tswv yim txuam NTXIV , los sis yog hais tias qhov kev xaiv ntawm cov tsiaj qus Nyab Xeeb SECTION tsis muaj nyob, rau txhua qhov chaw tub ntsuag. Ib qho me nyuam ntsuag yog ib qho tsis hais nyob rau hauv tsab ntawv linker. Koj tuaj yeem siv qhov kev xaiv no ntau zaus rau ntawm kab lus txib; Nws tiv thaiv qhov kev tawm tsam ntawm cov tswv yim ua ke nrog tib lub npe, qhov kawg ntawm cov khoom tso tawm ntawm cov zis hauv tsab ntawv txuas.

-v

--version

-V

Taw saib tus xov tooj rau ld . Qhov -V xaiv tau teev cov kev txhawb nqa kev txhawb zog.

-x

--qhov-tag nrho

Rho tawm tag nrho cov cim hauv zos.

-X

- Cov neeg hauv zos

Rho tawm tag nrho cov cim ib ntus hauv zos. Rau feem ntau lub hom phiaj, qhov no yog tag nrho cov cim hauv zos uas cov npe pib nrog L.

-yog cim

- cim-cim = cim

Sau lub npe ntawm txhua cov ntaub ntawv uas txuas rau hauv cov cim cim . Cov kev xaiv no kuj yuav raug muab rau txhua lub sijhawm. Nyob rau ntau lub tshuab nws yog ib qho tsim nyog yuav tsum muaj kev sib txig sib luag.

Qhov kev xaiv no yog qhov tseem ceeb thaum koj muaj ib lub cim undefined hauv koj qhov txuas, tiam sis tsis paub qhov twg qhov kev xa los yog los ntawm.

-Yeeb

Taw ntxiv rau txoj kev nrhiav tsev qiv ntawv. Qhov kev xaiv no tshwm sim rau Solaris compatibility.

-zeb lo lus tseem ceeb

Tus txhais tau tias cov ntsiab lus yog "ua lag ua luam", "pev", "nodel", "nodelope", "nodlopen", "nodump", "nodump", "tam sim no", "combreloc", "nocombreloc" ". Lwm cov ntsiab lus tseem ceeb rau cov Solaris compatibility. "initfirst" tias qhov khoom yuav pib thawj zaug ntawm runtime ua ntej lwm yam khoom. "pauv" yog qhov khoom uas nws lub cim qhia txog ua ntej txhua lub cim, tiam sis tus thawj executable. "loadfltr" kos npe rau qhov khoom uas nws cov khoom siv tau ua tiav tam sim ntawd ntawm runtime. "nodefaultlib" kos npe rau qhov khoom uas kev tshawb nrhiav ntawm qhov khoom kwv yees no txhua lub tsev qiv ntawv nrhiav tsev qiv ntawv. \ "nodelete \" tias cov khoom yuav tsum tsis txhob tau unloaded ntawm runtime. "Nodlopen" yog qhov khoom tsis muaj rau "dlopen". \ "nodump \" qhwv tus kwv tsis tau muab pov tseg los ntawm \ "dldump \". "tam sim no" kos npe rau cov khoom siv nrog cov neeg ua haujlwm tsis yog tub nkeeg. "defs" disallows cov cim tsis muaj tseeb. "muldefs" pub ntau lub ntsiab lus. "combreloc" ua ke ntau hom kev cuam tshuam ntau dua thiab xaiv lawv ua cim dynamic lookup caching tau.

"nocombreloc" ua rau me nyuam mob hlwb sib txuas ntau dua. "nocopyreloc" ua rau lub cev tsis tuaj yeem ua rau daim ntawv hloov.

- ( archives -)

- Staj-pawg archives - ua-pawg

Cov archives yuav tsum yog cov npe ntawm cov ntaub ntawv archive . Tej zaum lawv yuav yog cov npe ntawm cov npe, lossis -l xaiv.

Cov ntaub ntawv qhia txog kev tshawb fawb tau tshawb xyuas dua kom txog rau thaum tsis muaj cov neeg ua tsis tau yug dua tshiab. Nquag, ib qho kev tshawb xyuas archive tsuas yog ib zaug hauv qhov kev txiav txim uas nws tau teev nyob rau ntawm kab hais kom ua. Yog tias ib lub cim nyob rau hauv qhov kev xav tau no los daws qhov cim uas tsis muaj tseeb hais txog los ntawm ib qho khoom hauv cov ntaub ntawv uas tshwm sim tom qab ntawm txoj kab, tus txuas yuav tsis muaj peev xwm daws qhov kev siv ntawd. Los ntawm kev sau cov ntawv sau cia, lawv txhua tus yuav raug tshawb fawb kom txog rau thaum txhua tus neeg ua tim khawv tau daws.

Siv qhov kev xaiv no muaj kev kawm zoo. Nws yog qhov zoo tshaj plaws los siv nws thaum tsuas muaj cov lus nug uas tsis muaj kev tiv thaiv ntawm ob los sis ntau tshaj tawm.

--cov tsis-paub-input-koov

- tsis-tsis-paub-input-koov

Qhia rau tus txuas kom tau txais cov ntaub ntawv tawm tswv yim uas nws tsis pom kev. Qhov kev xav yog tias tus neeg paub txog lawv ua dab tsi thiab txhob txwm xav mus txuas rau hauv cov ntaub ntawv tsis paub txog cov ntaub ntawv. Qhov no yog kev coj cwj pwm ntawm qhov linker, ua ntej tso tawm 2.14. Tus cwj pwm tsis yog vim tso tawm 2.14 onwards yog xyeej xws li cov ntaub ntawv tawm tswv yim, thiab yog li ntawd - kev tsis paub-tsis paub-tus tswv yim- kev xaiv tau raug ntxiv los ua tus cwj pwm qub qub.

-assert lo lus tseem ceeb

Qhov kev xaiv no yog ignored rau SunOS compatibility .

-Bdynamic

-yog

-call_shared

Txuas tawm tsam cov tsev qiv ntawv tawm suab. Qhov no tsuas yog muaj txiaj ntsig nyob rau hauv kev sib tham uas sib koom siv cov tsev qiv ntawv tau txais kev txhawb siab. Qhov kev xaiv no feem ntau yog lub neej nyob rau ntawm tej lub platforms. Qhov txawv variants ntawm qhov kev xaiv no yog rau compatibility nrog ntau lub nruab. Koj siv tau qhov kev xaiv no ntau zaus rau ntawm kab lus hais: nws cuam tshuam rau lub tsev qiv ntawv nrhiav rau -l kev xaiv uas ua raws li nws.

-Teb sib tw

Teem caij rau "DF_1_GROUP" tus chij nyob hauv "DT_FLAGS_1" nkag rau hauv seem seem. Qhov no ua rau runtime linker lis xyuas qhov lookups hauv qhov khoom no thiab nws qhov kev pab cuam uas yuav tsum tau ua hauv pawg xwb. - tsis-undefined yog implied. Qhov kev xaiv no tsuas yog muaj txiaj ntsim ntawm ELF platforms uas pab txhawb cov tsev qiv ntawv .

-Thawj

-dn

-non_shared

-static

Tsis txhob tawm tsam cov tsev qiv ntawv sib koom. Qhov no tsuas yog muaj txiaj ntsig nyob rau hauv kev sib tham uas sib koom siv cov tsev qiv ntawv tau txais kev txhawb siab. Qhov txawv variants ntawm qhov kev xaiv no yog rau compatibility nrog ntau lub nruab. Koj siv tau qhov kev xaiv no ntau zaus rau ntawm kab lus hais: nws cuam tshuam rau lub tsev qiv ntawv nrhiav rau -l kev xaiv uas ua raws li nws.

-Bsymbolic

Thaum tsim ib lub tsev qiv ntawv sib koom, siv cov cim npe rau cov cim tseem ceeb rau lub ntsiab lus hauv lub tsev qiv ntawv sib koom, yog tias muaj. Feem ntau, nws muaj peev xwm rau ib qho kev pab cuam txuas rau ib lub tsev qiv ntawv sib koom los ua kom override lub ntsiab txhais hauv cov tsev qiv ntawv sib koom. Qhov kev xaiv no tsuas yog muaj txiaj ntsim ntawm ELFplatforms uas pab txhawb cov tsev qiv ntawv.

--check-seem

- tsis-khij-tshooj lus

Nug cov txuas tsis txuas rau qhov chaw nyob tom qab lawv raug xaiv los saib seb puas muaj cov overlaps. Feem ntau cov linker yuav ua daim tshev no, thiab yog tias nws pom ib qho overlaps nws yuav tsim tsim yuam kev. Lub linker paub txog, thiab ua rau cov kev pabcuam rau seem nyob rau hauv overlays. Lub cwj pwm coj tsis tau ua rau rov qab los ntawm kev siv qhov hais kom ua kab - nqhis-seem .

--cref

Cov zis tawm ntawm lub rooj siv khaub lig. Yog tias ib daim ntawv qhia txuas txuas tau tsim tawm, qhov kev siv cross reference yog muab luam tawm rau daim ntawv qhia. Txwv tsis pub, nws luam tawm ntawm tus qauv tso tawm.

Lub hom phiaj ntawm lub rooj yog txhob txwm yooj yim, yog li ntawd nws yuav yooj yim ua los ntawm tsab ntawv yog tias tsim nyog. Cov cim yog luam tawm, txheeb los ntawm lub npe. Rau txhua lub cim, ib daim ntawv teev npe cov npe. Yog hais tias lub cim yog txhais, thawj cov ntaub ntawv teev yog qhov chaw ntawm lub ntsiab txhais. Cov ntaub ntawv ntxiv muaj cov chiv keeb rau lub cim.

- tsis-meej-dav

Qhov kev xaiv no txwv tsis pub cov chaw nyob rau ntau cov cim. Tsab ntawv hais kom ua "INHIBIT_COMMON_ALLOCATION" muaj cov nyhuv tib yam.

Qhov - tsis yog-kev xaiv -ntau txoj cai pub rau txoj kev txiav txim siab muab cov chaw nyob rau cov cim los ntawm kev xaiv ntawm cov ntaub ntawv tso tawm; txwv tsis pub ib qho kev tawm dag zog tso tawm uas tsis yog siv cov chaw nyob rau cov cim. Siv -nos-define-common pub rau cov cim cov cim uas tau hais los ntawm ib lub tsev qiv ntawv uas tau muab los tso rau cov chaw nyob hauv cov txheej txheem tseem ceeb nkaus xwb. Qhov no tshem tawm qhov chaw tsis muaj chaw nyob hauv cov tsev qiv ntawv uas sib koom siv, thiab tseem tiv thaiv txhua yam kev ntxhov siab txog kev daws qhov tsis ncaj ncees lawm thaum muaj ntau ntau cov kev cai nrog cov kev tshawb nrhiav tshwj xeeb rau kev daws teeb meem runtime.

--defsym symbol = qhia

Tsim lub ntiaj teb cim nyob rau hauv cov ntaub ntawv tso tawm, uas muaj qhov chaw nyob uas qhia los ntawm kev qhia . Koj tuaj yeem siv qhov kev xaiv no ntau zaus raws li qhov tsim nyog los txhais tau ntau lub cim rau ntawm kab ntawv. Ib daim ntawv ntawm kev xam xaj yog txhawb rau qhov kev qhia hauv cov ntsiab lus no: koj muab tau ib lub cim rau hexadecimal lossis lub npe ntawm tus cim uas twb muaj lawm, los sis siv "+" thiab "-" los ntxiv los sis rho nws cov hnub nyoog los sis cov cim. Yog tias koj xav tau cov lus qhia ntau ntxiv, xav siv cov kab lus txuas lus ntawm kab lus los ntawm tsab ntawv. Lus Cim: Yuav tsum tsis muaj chaw seem ntawm lub cim , qhov sib npaug sib npaug (`` = ''), thiab kev qhia .

--demangle [= style ]

- tsis-nrawm nrawm

Cov kev tswj no yuav tswj xyuas seb puas yuav cim tau cov cim npe hauv cov lus yuam kev thiab lwm cov lus tso tawm. Thaum nws txuas mus rau qhov kev sib txuas lus, nws sim muab cov cim npe hauv cov ntawv nyeem: nws strips ua underscores yog tias lawv siv los ntawm cov khoom ua ntaub ntawv hom ntawv, thiab hloov C ++ mangled cim npe rau cov npe neeg nyeem. Sib txawv compilers muaj ntau hom mangling. Qhov yeem sib tw xaiv cov lus sib cav yuav raug siv los xaiv ib hom kev tsim nyog rau koj cov compiler. Lub linker yuav txiav txim los ntawm lub neej tsuas yog lub chaw txawv COLLECT_NO_DEMANGLE . Cov kev xaiv no yuav raug siv los ua kom dhau lub neej ntawd.

- cov ntaub ntawv -linker-linker

Teem lub npe ntawm cov dynamic linker. Qhov no tsuas yog muaj txiaj ntsim thaum tsim kom muaj kev ua tiav ELF. Lub neej txuas dynamic linker feem ntau yog lawm; tsis txhob siv qhov no tshwj tsis yog koj paub tias koj ua dab tsi.

- teebmeem-kev hloov chaw

Qhov kev xaiv no tsuas yog muaj txiaj ntsig thaum txuas MIPS nyob ruaj ntseg PIC code, uas yog tsim los ntawm hom kab-duab-pic rau GNU compiler thiab assembler. Nws ua rau lub linker los tsim ib lub rooj uas siv tau rau ntawm runtime hloov chaw cov ntaub ntawv uas yog qhov zoo tshaj qub rau pointer qhov tseem ceeb. Saib cov cai nyob hauv kev ntsuam xyuas / ld-empic kom paub meej.

- Faj-ceeb toom

Kho tag nrho cov lus ceeb toom ua yuam kev .

- qauj-exe-sx

Nco ntsoov tias ib cov ntaub ntawv tso zis muaj ib qho .exe SR.

Yog hais tias muaj cov ntaub ntawv tso tawm ntsees siab tau ntse tsis tau muaj " exe " los yog " .dll " syria, qhov kev xaiv no yuam cov txuas mus luam cov ntaub ntawv tso tawm rau ib qho ntawm tib lub npe nrog tus ".exe" SR. Qhov kev xaiv no yuav pab tau thaum siv unmodified Unix makefiles ntawm lub Microsoft Windows lub party, txij li qee lub versions ntawm lub qhov rais yuav tsis khiav ib qho duab tshwj tsis yog nws xaus rau hauv ".exe" SR.

--no-gc-sections

--gc-seem

Txhawb cov khoom pov tseg ntawm cov khoom siv tsis siv. Nws yog ignored ntawm lub hom phiaj uas tsis txhawb qhov kev xaiv no. Qhov kev xaiv no tsis tau tshaj li -r , los yog nws yuav tsum siv nrog dynamic txuas. Tus cwj pwm ua neej tsis zoo (tsis ua cov qoob no khib nyiab ) tuaj yeem rov qab los ntawm specifying --no-gc-sections ntawm txoj kab.

- pabcuam

Sau cov ntsiab lus ntawm qhov kev txiav txim kab-kev xaiv ntawm cov zis tawm thiab tawm.

- pabcuam-pabcuam

Sau ib qho ntawm tag nrho cov kev xaiv kev xaiv ntawm tus qauv tawm thiab tawm.

-Txhua tus mapfile

Sau ib daim ntawv qhia txuas rau daim ntawv mapfile . Saib qhov kev piav qhia ntawm qhov kev xaiv- M , saum toj no.

- tsis-nco-nco

ld feem ntau optimizes rau kev ceev tshaj nco pab los ntawm caching lub cim rooj ntawm cov ntaub ntawv input hauv nco. Qhov kev xaiv no qhia ld rau qhov zoo siv rau kev siv lub cim xeeb, los rereading lub rooj cim raws li tsim nyog. Qhov no tej zaum yuav tsum yog tias ld sau tsis nco chaw thaum txuas ib qho loj executable.

- tsis-undefined

-z defs

Nquag thaum tsim ib lub tsev qiv ntawv uas tsis qhia tawm, cov cim tsis muaj tseeb thiab sab laug kom daws tau los ntawm runtime loader. Cov kev xaiv no txwv tsis pub cov cim uas tsis muaj tseeb.

- Ntaus-ntau-txhais

-z muldefs

Nquag thaum lub cim tau txhais ntau zaus, tus txuas yuav qhia txog kev ua yuam kev tuag. Cov kev xaiv no cia ntau cov ntsiab lus thiab qhov kev txhais thawj yuav siv.

- poob-shlib-undefined

Tso cim cov cim rau hauv cov khoom sib koom txawm tias thaum twg - tsis-undefined. Cov txiaj ntsig ntawm cov ntsiab lus yuav yog cov cim uas tsis muaj tseeb nyob rau hauv cov khoom niaj hnub tseem tseem ua yuam kev, tiam sis tsis muaj cov cim hauv cov khoom sib koom siv yuav tsum raug tsis lees paub. Qhov kev siv ntawm no_undefined ua rau qhov kev xav tias lub runtime linker yuav choke rau ntawm cov cim undefined. Txawm li cas los muaj tsawg kawg yog ib qho system (BeOS) qhov cim uas tsis muaj tseeb nyob hauv cov tsev qiv ntawv yog qhov tseeb vim hais tias cov ntsiav teeb meem ntawm lawv lub sij hawm los xaiv qhov kev ua haujlwm yog qhov tsim nyog rau cov qauv tam sim no. IE dynamically xaiv ib qho tsim nyog memset muaj nuj nqi. Thaj li nws yog ib qho tseem ceeb rau HPPA sib qiv qiv kom muaj cov cim tsis muaj tseeb.

- tsis-undefined-version

Nquag thaum lub cim muaj ib qho cim undefined, tus linker yuav tsis pom nws. Qhov kev xaiv no tsis tso cai rau cov cim nrog cov qauv uas tsis raug cim thiab cov kev ua yuam kev tuag yuav muab rau.

- tsis-ceeb toom-mismatch

Naj nub ld yuav muab ib qho yuam kev yog tias koj sim ua ke ua ke cov ntaub ntawv tawm tswv yim uas tsis raug coj mus siv vim qee zaum, vim tias lawv tau muab tso ua ke rau ntau tus txheej txheem los yog rau lwm cov kev mob siab. Qhov kev xaiv no qhia ld tias nws yuav tsum cia twj ywm tso cai ua tau li no. Qhov kev xaiv no tsuas yog siv nrog kev saib xyuas, thaum muaj thaum koj tau siv qee qhov tshwj xeeb uas ua kom pom tseeb tias qhov kev sib txuas ntawm qhov txuas tsis tsim nyog.

- li-tag nrho-archive

Tua cov nyhuv ntawm qhov - kos-archive xaiv rau tom qab archive ntaub ntawv.

-noinhibit-exec

Khaws cov ntaub ntawv tso tawm cov lus tso tawm thaum twg nws tseem siv tau. Feem ntau, tus txuas yuav tsis tsim cov ntaub ntawv tso tawm yog tias nws ntsib cov teeb meem thaum lub sij hawm txuas; nws tawm tsis tau sau ib cov ntaub ntawv tso zis thaum nws teeb meem kev yuam kev.

-nostdlib

Tsuas yog nrhiav cov tsev qiv ntawv ncaj nraim hauv cov lus txib. Lub tsev qiv ntawv qhia txog kev txuas hauv cov ntawv txuas (nrog rau kev sib txuas lus sib txuas ntawm cov kab hais kom ua) yuav tsum tsis lees paub.

- cov ntaub ntawv tso tawm-tawm qauv

ld tej zaum yuav teeb tsa los txhawb ntau tshaj ib hom khoom ua ke. Yog hais tias koj ld yog configured li no, koj tuaj yeem siv qhov kev xaiv - kev xaiv kom paub tseeb hom ntawv binary rau cov zis kwv cov ntaub ntawv. Txawm tias thaum ld raug teeb tsa los txhawb nqa lwm tus tawm tswv yim, koj tsis yog feem ntau yuav tsum tau qhia qhov no, raws li ld yuav tsum tau teeb tsa los ua ib lub neej tso zis ntau hom ntawm txhua lub tshuab. output-format yog ib txoj hlua ntawv, lub npe ntawm ib hom kev txhawb los ntawm BFD cov tsev qiv ntawv. (Koj tuaj yeem sau cov ntawv qhia binary uas muaj objdump -i .) Tsab ntawv sau "OUTPUT_FORMAT" kuj tuaj yeem qhia meej rau hom ntawv tso tawm, tab sis qhov kev xaiv no ua rau nws tsis zoo.

-qmagic

Qhov kev xaiv no yog ignored rau Linux compatibility.

-Yog

Qhov kev xaiv no yog ignored rau SVR4 compatibility.

- nraaj

Ib qho kev xaiv nrog cov teeb meem siv tshuab. Qhov kev xaiv no tsuas yog txhawb rau ob peb lub hom phiaj.

Nyob rau tej lub platforms, qhov kev xaiv - kev xaiv ua haujlwm thoob ntiaj teb optimizations uas ua tau thaum lub linker daws nyob rau hauv qhov kev pab cuam, xws li relaxing chaw hom thiab synthesizing cov lus qhia nyob rau hauv cov ntaub ntawv tso tawm cov zis.

Nyob rau tej lub platforms cov kev sib txuas lus thoob ntiajteb no tej zaum yuav ua rau lub cim kev debugging ntawm executable resulting tsis yooj yim sua. Qhov no yog hu ua rooj plaub rau Matsushita MN10200 thiab MN10300 tsev neeg ntawm processors.

On platforms qhov twg qhov no tsis txaus siab, -relax txais, tab sis ignored.

- sau ntawv-cim- filename-filename

Khaws cov cim rau hauv cov ntaub ntawv filename xwb , muab pov tseg tag nrho lwm cov. filename tsuas yog cov ntaub ntawv tiaj tus, nrog ib lub cim cim rau ib kab. Qhov kev xaiv no yog qhov tshwj xeeb tshaj yog kev pab hauv cov cheeb tsam (xws li VxWorks) qhov twg lub thoob ntiaj teb lub rooj cim tau yooj yim zuj zus, kom tseg kev khiav dej num sij hawm.

- cim-cim-cim tsis muab cov cim uas tsis muaj tseeb, lossis cov cim uas yuav tsum muaj rau kev hloov chaw.

Koj tsuas qhia kom meej - cia li cim-cim-ua ib zaug hauv kab lus hais. Nws overrides -s thiab -S .

-rpath dir

Ntxiv ib phau rau cov tsev qiv ntawv tshawb nrhiav runtime. Qhov no yog siv thaum txuas ib qho ELFexecutable nrog cov khoom sib koom. Txhua -rpath cov lus muaj concatenated thiab kis mus rau runtime linker, uas siv los nrhiav cov khoom sib koom ntawm runtime. Lub -rpath kev xaiv kuj yog siv thaum nrhiav cov khoom sib koom ua ke uas xav tau los ntawm cov khoom siv sib koom tes muaj nyob hauv qhov txuas; pom qhov kev piav qhia ntawm qhov kev xaiv-qhov txuas . Yog tias -rpath tsis siv thaum txuas tus ELF executable, cov ntsiab lus ntawm ib puag ncig ib puag ncig "LD_RUN_PATH" yuav raug siv yog nws sau tseg.

Lub -rpath xaiv kuj tseem siv tau rau hauv SunOS. Yog tas, nyob rau SunOS, qhov linker yuav tsim ib qho runtime search patch tawm ntawm tag nrho cov -L xaiv nws yog muab. Yog tias txoj kev xaiv -rpath siv, txoj kev tshawb nrhiav runtime yuav raug tsim tshwj xeeb tshaj yog siv cov kev xaiv -rpath , uas raug nqi ntau qhov -L xaiv. Qhov no yuav pab tau thaum uas siv cov gcc, uas ntxiv ntau- L kev xaiv uas tej zaum yuav onNFS mounted filesystems.

Kev sib tw nrog lwm cov ELF linkers, yog hais tias qhov -R xaiv tau ua raws li lub npe directory, tsis yog lub npe ntawm cov ntaub ntawv, nws raug kho raws li txoj cai -rpath .

-rpath-txuas DIR

Thaum siv ELF lossis SunOS, ib lub tsev qiv ntawv sib koom siv tau kom lwm tus. Qhov no tshwm sim thaum muaj "ld -shared" txuas nrog lub tsev qiv ntawv sib koom ua ib qho ntawm cov ntaub ntawv tawm tswv yim.

Thaum tus linker ntsib ib qho kev pab cuam thaum uas ua ib qho tsis sib koom, tsis txuas mus, nws yuav cia li sim nrhiav lub tsev qiv ntawv uas yuav tsum tau muaj thiab muab tso rau hauv qhov txuas, yog tias tsis muaj ntsees. Nyob rau hauv xws li ib rooj plaub, lub -ppath-link kev xaiv qhia thawj txheej ntawm Wage mus nrhiav. Kev xaiv-qhov chaw-link yuav qhia meej txog cov npe ntawm cov npe ntawm cov npe ntawm cov npe ntawm cov npe cais los yog los ntawm ntau zaus.

Qhov kev xaiv no yuav tsum tau siv nrog kev ceeb toom raws li nws overrides txoj kev tshawb nrhiav uas tej zaum tau nyuaj compiled rau hauv ib lub tsev qiv ntawv sib koom. Nyob rau hauv xws li ib rooj plaub nws yog ua tau los siv unintentionally ib txoj kev tshawb nrhiav dua li ntawm runtime linker yuav ua.

Lub linker siv cov kev nrhiav hauv qab no los nrhiav cov tsev qiv ntawv uas sib koom ua ke.

1.

Muaj lwm txoj kev qhia los ntawm txoj cai- kev xaiv -txuas .

2.

Cov ntaub ntawv qhia los ntawm kev xaiv -rpath . Qhov txawv nruab nrab ntawm -rpath thiab -rpath-link yog tias cov kab lus uas tau teev tseg los ntawm -rpath xaiv muaj nyob hauv executable thiab siv nyob rau runtime, whereas qhov -txuas qhov txuas tsuas yog siv tau ntawm qhov txuas sij hawm. Nws yog rau cov nativeer xwb.

3.

Rau ntawm lub ELF, yog tias cov kev xaiv tsis yog -rpath thiab "rpath-link" tsis raug siv, nrhiav cov ntsiab lus ntawm qhov chaw hloov "LD_RUN_PATH". Nws yog rau cov nativeer xwb.

4.

Hauv SunOS, yog qhov kev xaiv -rpath tsis raug siv, tshawb nrhiav cov kev qhia txog kev siv -L kev xaiv.

5.

Rau ib haiv neeg txuas, cov ntsiab lus ntawm ib puag ncig ib puag ncig "LD_LIBRARY_PATH".

6.

Rau ib hom ntawv ELF txuas, cov kev qhia hauv "DT_RUNPATH" lossis "DT_RPATH" ntawm lub tsev qiv ntawv sib koom tau tshawb nrhiav cov tsev qiv ntawv sib koom siv los ntawm nws. Qhov "DT_RPATH" nkag yog raug suav tias yog "DT_RUNPATH" nkag tau tshwm sim.

7.

Lub neej qhov tseem ceeb, feem ntau / lib thiab / usr / lib .

8.

Rau ib haiv neeg txuas rau ntawm lub ELF, yog tias cov ntaub ntawv /etc/ld.so.conf tshwm sim, cov npe ntawm cov ntaub ntawv muaj nyob rau hauv cov ntaub ntawv ntawd.

Yog tias lub tsev qiv ntawv yuav tsum tsis pom, lub linker yuav tawm ib qho kev ceeb toom thiab txuas nrog qhov txuas.

-kawm

-Txhawb

Tsim ib lub tsev qiv ntawv sib koom. Qhov no yog tam sim no tsuas yog txhawb siab ntawm ELF, XCOFF thiab SunOS platforms. Hauv SunOS, qhov linker yuav cia li tsim ib lub tsev qiv ntawv uas sib koom ua ke yog tias tsis yog siv rau -e kev xaiv thiab muaj cov cim tsis muaj tseeb hauv qhov txuas.

- qog-ntau

Qhov kev xaiv no qhia ld kom txheeb cov cim cov cim los ntawm qhov loj thaum nws muab lawv tso rau hauv qhov tsim nyog seem. Ua ntej tag nrho cov cim ib byte, ces tag nrho ob byte, ces tag nrho plaub bytes, thiab ces txhua tsav txhua yam. Qhov no yog los tiv thaiv khoob ntawm cov cim vim kev sib koom ua ke.

--split-los-ua ntaub ntawv [ qhov loj ]

Zoo li - tawm sis-los-reloc tab sis tsim tawm ib qho zis tshiab rau txhua tus tawm ntaub ntawv thaum loj me me . qhov loj me me rau qhov luaj li cas 1 yog tsis muab.

--split-by-reloc [ suav ]

Sim tsim cov ntu ntxiv rau hauv cov ntaub ntawv tawm kom tsis muaj cov seem tso tawm hauv cov ntaub ntawv muaj ntau tshaj qhov suav ntawm kev suav . Qhov no yog qhov tseem ceeb thaum tsim cov ntaub ntawv xa rov qab mus rau hauv cov ntaub ntawv los ntawm COFF cov ntaub ntawv hom ntawv; vim COFFcannot sawv cev ntau tshaj 65535 kev cuam tshuam hauv ib seem. Nco ntsoov tias qhov no yuav tsis ua hauj lwm nrog cov ntaub ntawv tawm tsam cov ntaub ntawv uas tsis txhawb qhov kev xaiv khib nyiab. Lub linker yuav tsis faib cov khoom seem rau cov neeg tawm tswv yim, yog li cov lus teb tsuas muaj ntau tshaj qhov suav ntawm qhov suav ib qhov chaw tawm yuav muaj qhov ntau qhov chaw khiav nkaum. suav cov nuj nqis rau tus nqi ntawm 32768.

--stats

Txheeb thiab tso tawm txheeb cais txog kev ua haujlwm ntawm qhov txuas, xws li lub sij hawm tiav thiab kev siv lub cim xeeb.

- hom-txheej txheem

Rau qee lub hom phaj, cov zis ntawm ld sib txawv hauv qee txoj kev los ntawm cov zis ntawm qee cov uas twb muaj lawm txuas. Qhov kev hloov no thov kom ld siv cov qauv siv xwb.

Piv txwv, nyob rau hauv SunOS, ld combines duplicate nkag hauv lub rooj cim lus ntawm txoj hlua. Qhov no yuav txo qhov luaj li cas ntawm cov ntaub ntawv tso zis nrog cov ntaub ntawv debugging tag nrho tshaj 30 feem pua. Hmoov tsis, lub Tshooj "dbx" tsis tuaj yeem nyeem cov txheej txheem uas tshwm sim ("gdb" tsis muaj teebmeem). Lub -thiab- hloov hom qhia ld tsis txhob muab cov ntaub ntawv sib txawv.

- pib- section section = org

Nrhiav ib seem hauv cov ntaub ntawv tso tawm ntawm qhov chaw nyob uas tsis yog muab los ntawm tus thawj . Koj tuaj yeem siv qhov kev xaiv no ntau zaus raws li qhov tsim nyog yuav nrhiav tau ntau seem ntawm kab lus. org yuav tsum yog ib tus zauv uas nws tso zauv; rau compatibility nrog lwm linkers, koj yuav tso tawm tus ua 0x feem ntau txuam nrog hexadecimal qhov tseem ceeb. Lus Cim: Yuav tsum tsis muaj qhov chaw dawb ntawm nqe lus , qhov sib npaug sib npaug (`` = ''), thiab org .

-Tables org

-Tdata org

-Tshooj cai

Siv org ua qhov pib qhov chaw rau --- piv txwv --- qhov "bss", "data", lossis qhov "text" ntu ntawm cov ntaub ntawv tso tawm. org yuav tsum yog ib tus zauv uas nws tso zauv; rau compatibility nrog lwm linkers, koj yuav tso tawm tus ua 0x feem ntau txuam nrog hexadecimal qhov tseem ceeb.

--dll-verbose

- Qhia tawm

Taw saib tus xov tooj rau ld thiab sau cov khoom sib txuas lus txhawb kev sib txuas lus. Muab cov ntaub ntawv tawm tswv yim tuaj yeem qhib tsis tau. Muab cov ntawv txuas txuas los ntawm qhov linker.

--version-tsab ntawv = version-scriptfile

Qhia kom meej lub npe ntawm ib tsab ntawv version rau qhov txuas. Qhov no feem ntau yog siv thaum tsim cov tsev qiv ntawv sib koom los qhia meej txog cov ncauj lus qhia ntxiv txog version heirarchy rau lub tsev qiv ntawv tsim. Qhov kev xaiv no tsuas yog muaj txiaj ntsim ntawm ELF platforms uas pab txhawb cov tsev qiv ntawv.

- tshaj plaws

Ceeb toom thaum muaj ib lub cim zoo sib xws nrog lwm lub cim los sis nrog lub cim txhais. Unix linkers pub no ua dog dig sloppy, tab sis linkers rau ntawm lwm lub operating systems tsis. Qhov kev xaiv no tso cai rau koj pom cov teeb meem ntawm kev sib txuas cov cim lub ntiaj teb. Hmoov tsis, qee cov tsev qiv ntawv siv qiv no, yog li koj tau txais qee cov lus ceeb toom txog cov cim hauv cov tsev qiv ntawv zoo li hauv koj cov kev pabcuam.

Nws muaj peb hom kev cim thoob ntiajteb, piv txwv li no los ntawm C piv txwv:

rau cov menyuam kuv = 1;

Ib lub ntsiab txhais, uas nkag mus hauv cov ntaub ntawv pib ntawm cov ntaub ntawv tso zis.

extern rau kuv;

Ib qho kev qhia txog undefined, uas tsis faib chaw. Yuav tsum muaj ib qho txhais los yog ib qho cim rau qhov sib txawv ntawm qhov chaw.

rau kuv;

Ib qho cim. Yog tias tsuas yog (ib los sis ntau tshaj) cov cim rau ib qho txawv, nws mus rau hauv thaj tsam ntawm uninitialized ntawm cov ntaub ntawv tso zis. Lub linker merges ntau ntau cov cim rau tib yam kuj sib txawv rau hauv ib lub cim. Yog tias lawv muaj ntau qhov sib txawv, nws xaiv qhov loj tshaj plaws. Lub linker puv ib lub cim rau cov lus tshaj tawm, yog tias muaj ib lub ntsiab txhais ntawm tib qho txawv.

Kev xaiv - hom kev xaiv -muaj ntau hom yuav tsim tau tsib yam lus ceeb toom. Txhua daim ntawv ceeb toom muaj ob kab lus: thawj qhia txog lub cim uas nyuam qhuav ntsib, thiab qhov thib ob piav txog lub cim qub dhau los nrog tib lub npe. Ib lossis ob qho ntawm ob lub cim yuav yog ib qho cim.

1.

Tig ib qho cim rau hauv ib qho kev siv, vim hais tias muaj ib lub ntsiab txhais rau lub cim.

(
): ceeb toom: ntau ntawm 'overridden los ntawm txhais (
): ceeb toom: sau tseg ntawm no

2.

Tig ib qho cim rau kev siv, vim hais tias tom qab lub ntsiab txhais rau lub cim tau ntsib. Qhov no yog tib yam li yav dhau los, tshwj tsis yog tias cov cim tau ntsib nyob hauv ib qho kev txiav txim sib txawv.

(
): ceeb toom: txhais ntawm 'overriding ntau (
): ceeb toom: ib qho nyob ntawm no

3.

Tuav ib qho cim uas muaj cim zoo tib yam.

(
): ceeb toom: ntau ntau ntawm (
): ceeb toom: yav dhau los yog nyob ntawm no

4.

Tuav ib qho cim uas muaj cim loj tshaj yav dhau los.

(
): lus ceeb toom: feem ntau ntawm 'overridden los ntawm ntau hom (
): ceeb toom: loj dua nyob ntawm no

5.

Tuav ib qho cim uas muaj cim tsawg dhau los. Qhov no yog tib yam li yav dhau los, tshwj tsis yog tias cov cim tau ntsib nyob hauv ib qho kev txiav txim sib txawv.

(
): ceeb toom: feem ntau ntawm 'overriding ntau hom (
): ceeb toom: me me nyob ntawm no

--tus-constructors

Ceeb toom yog tias muaj lwm lub ntiaj teb constructors siv. Qhov no tsuas yog pab tau rau ob peb yam tawm tsam cov ntaub ntawv. Rau hom ntawv xws li COFF los yog ELF, tus linker tuaj yeem tsis paub txog kev siv cov ntiaj teb cov neeg tsim khoom.

- sib txawv-ntau-gp

Ceeb toom yog tias ntau lub ntiaj teb pointer qhov tseem ceeb yuav tsum muaj nyob rau hauv cov ntaub ntawv tso tawm . Qhov no tsuas yog muaj nuj nqis rau qee cov txheej txheem, xws li Alpha. Tshwj xeeb, qee qhov kev lag luam muab qhov tseem ceeb ntawm qhov tseem ceeb hauv ib seem tshwj xeeb. Tus kws sau npe tshwj xeeb (lub ntiaj teb pointer) taw rau hauv nruab nrab ntawm seem no, yog li ntawd qhov tseem tuaj yeem siv tau los ntawm kev sau npe ntawm hom ntaub ntawv. Txij li cov offset nyob rau hauv cov ntaub ntawv nrawm nrawm tsau thiab me me (xws li, 16 khoom), qhov no txwv qhov siab tshaj plaws ntawm lub pas dej mus tas li. Li no, nyob rau hauv cov kev pab cuam loj, nws yog feem ntau tsim nyog siv ntau lub ntiaj teb pointer qhov tseem ceeb thiaj li yuav tau hais txog tag nrho cov tau constants. Qhov kev xaiv no ua rau ceeb toom yuav tsum tau muab thaum twg qhov teeb meem no tshwm sim.

- ib zaug-ib zaug

Tsuas yog ceeb toom ib zaug rau txhua tus cim cim tsis muaj cim, tsis yog ib zaug ntawm ib qho uas yog siv rau nws.

- ntu ib ntu-sib xyaw

Ceeb toom yog tias qhov chaw nyob ntawm qhov seem zis hloov vim yog kev sib tw. Feem ntau, cov lus sib dhos yuav muab los ntawm cov lus nug. Qhov chaw nyob tsuas yog muab hloov yog tias nws tsis tau pom zoo; qhov ntawd yog, yog hais tias "SECTIONS" txib tsis tau hais qhia qhov chaw nyob pib rau seem.

--qhov-archive

Rau txhua tus archive hais rau ntawm kab hais kom ua tom qab - qhov kev xaiv-archive , nrog rau txhua tus kwv cov ntaub ntawv nyob rau hauv cov ntaub ntawv nyob hauv qhov txuas, tsis yog searching lub archive rau cov ntaub ntawv cov khoom yuav tsum tau. Qhov no feem ntau yog siv los xa cov ntaub ntawv archive mus rau hauv ib lub tsev qiv ntawv sib koom, yuam txhua yam khoom kom muaj nyob hauv qhov chaw sib koom ua ke. Qhov kev xaiv no yuav siv ntau tshaj ib zaug.

Ob sau ntawv thaum siv qhov kev xaiv no los ntawm gcc: Ua ntej, gcc tsis paub txog qhov kev xaiv no, yog li koj yuav tsum siv -Wl, -khau-archive . Thib ob, tsis txhob hnov ​​qab siv -Wl, -no-tag nrho-archive tom qab koj daim ntawv teev cov archives, vim gcc yuav ntxiv nws cov ntawv sau cia rau koj qhov txuas thiab koj tsis xav kom tus chij no cuam tshuam rau cov tib neeg.

--wrap cim

Siv cov ntawv ntxig rau qhov cim . Cov cim uas tsis tau muab piav qhia rau lub cim yuav raug muab kho rau "__ wrap_symbol". Cov lus hais txog "undefined reference to" __real_symbol "yuav raug muab daws rau lub cim .

Qhov no tuaj yeem siv tau los muab ib lub hnab rau ib qho kev ua haujlwm. Cov kev ua haujlwm yuav tsum raug hu ua "__wrap_symbol". Yog tias nws xav hu lub zog, nws yuav tsum hu rau "__ real_symbol".

Ntawm no yog qhov piv txwv tsis tseem ceeb:

tsis muaj dab tsi * __wrap_malloc (int c) {printf ("malloc hu nrog% ld \ n", c); rov qab __real_malloc (c); }

Yog hais tias koj txuas lwm cov cai nrog rau cov ntaub ntawv siv no --wrap malloc , ces tag nrho cov hu mus rau "malloc" yuav hu rau qhov kev ua haujlwm "__wrap_malloc". Qhov kev hu mus rau "__real_malloc" hauv "__wrap_malloc" yuav hu rau txoj haujlwm "malloc" tiag tiag.

Koj kuj xav muab tus "__real_malloc" ua kom zoo li ntawd, yog li ntawd qhov kev sib txuas tsis muaj qhov kev xaiv --wrap yuav ua tiav. Yog tias koj ua li no, koj yuav tsum tsis txhob muab lub ntsiab txhais ntawm "__ real_malloc" hauv tib lub file "__wrap_malloc"; yog tias koj ua, pawg neeg tuaj yeem kho qhov hu ua ntej qhov txuas yuav muaj sijhawm rau muab qhwv rau "malloc".

-enable-tshiab-dtags

- dlaws-tshiab-dtags

Qhov linker no tuaj yeem ua tus cim dynamic cim tshiab hauv ELF. Tiam sis cov laus dua ELF lub tshuab yuav tsis to taub lawv. Yog hais tias koj qhia --enable-new-dtags , dynamic tags yuav tsum tsim raws li xav tau. Yog hais tias koj qhia - hiav txwv-tshiab-dtags , tsis muaj tshiab dynamic cim npe yuav tsim. Yog vim, lub cim tshiab dynamic tsis tsim. Nco ntsoov tias cov kev xaiv no tsuas muaj cov kev pab cuam forELF.

Lub i386 PE linker txhawb cov kev xaiv -shared , uas ua rau cov zis los ua ib lub tsev qiv ntawv uas muaj suab muaj zog (DLL) tsis yog ib qho kev ua tiav. Koj yuav tsum tau sau npe "* .dll" thaum koj siv qhov kev xaiv no. Tsis tas li ntawd, qhov linker txhawb cov txheej txheem "* .def" cov ntaub ntawv, uas tej zaum yuav tau teev nyob rau hauv qhov txuas ntawm kab sib txuas xws li ib qho khoom siv (qhov tseeb, nws yuav tsum tau ua ntej ntawm cov ntaub ntawv xa tawm ntawm lub chaw, los xyuas kom meej tias lawv tau txuas rau, ib yam li ib yam khoom zoo tib yam).

Ntxiv nrog rau cov kev xaiv rau txhua lub hom phaj, i386 PE linker txhawb kev ntxiv lus xaiv cov kev xaiv tshwj xeeb rau cov hom phiaj rau i386 PE. Cov kev xaiv uas coj qhov tseem ceeb yuav raug muab cais tawm ntawm lawv qhov kev tsim txiaj los ntawm qhov chaw los yog qhov sib npaug sib npaug.

--qhov-stdcall-alias

Yog hais tias muab, cov cim nrog lub stdcall SR (@ nn ) yuav tsum tau exported raws li-yog thiab tseem nrog cov sawb stripped.

- ua ntaub ntawv thov

Siv cov ntaub ntawv raws li lub npe ntawm cov ntaub ntawv kom txuag tau qhov chaw nyob ntawm txhua qhov chaw khiav dej num uas tsim nyog rau tsim DLLs nrog dlltool .

-dll

Tsim ib DLL tsis txhob siv cov cai li niaj hnub ua. Koj tuaj yeem siv tau -shared lossis qhia meej txog "LIBRARY" hauv cov ntaub ntawv ".def".

--enable-stdcall-fixup

- dlaws-stdcall-fixup

Yog qhov kev txuas pom ib lub cim tias nws tsis muaj peev xwm daws, nws yuav sim ua tus 'txuas sib txuas' los ntawm kev nrhiav lwm lub cim uas txawv ntawm qhov cim ntawm lub npe cim (cdecl vs stdcall) thiab yuav kho qhov cim ntawd txuas rau ntais ntawv. Piv txwv, lub cim undefined "_foo" tej zaum yuav txuas rau txoj haujlwm "_foo @ 12", lossis lub cim undefined "_bar @ 16" tej zaum yuav txuas rau txoj haujlwm "_bar". Thaum lub linker ua li no, nws luam tawm cov lus ceeb toom, vim nws yuav tsum tsis muaj qhov yuam kev mus txuas, tab sis qee zaus qiv qiv tsim los ntawm lwm tus neeg dlls yuav tsum tau siv cov lus no. Yog tias koj qhia tau tias yog -enable-stdcall-fixup , qhov no yog qhov muaj siab thiab cov lus ceeb toom tsis sau. Yog hais tias koj qhia kom meej - qhov tseem ceeb-stdcall-fixup , no feature yog neeg xiam oob khab thiab cov mismatches yog xam ua yuam kev.

- Hloov-tagnrho-cim tseg

Yog tias muab, tag nrho cov cim hauv ntiaj teb hauv cov khoom siv los tsim kom muaj DLL yuav tsum xa tawm los ntawm DLL. Nco ntsoov tias qhov no yog qhov tseeb yog tias muaj lwm yam tsis yog ib yam khoom uas muaj xa tawm. Thaum cov cim muaj tseeb exported ntawm DEF ntaub ntawv los yog implicitly exported ntawm kev ua haujlwm, lub neej ntawd yog tsis export lwm yam tshwj tsis yog qhov kev xaiv no yog muab. Nco ntsoov tias cov cim "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12", thiab "impure_ptr" yuav tsis muab xa tawm. Kuj, cov cim uas tau los ntawm lwm cov DLLs yuav tsis raug xa tawm, los yog cov cim qhia txog DLL qhov kev teeb tsa sab hauv xws li cov uas pib nrog "_head_" lossis xaus nrog "_iname". Tsis tas li ntawd, tsis muaj cov cim los ntawm "libgcc", "libstd ++", "libmingw32", los yog "crtX.o" yuav raug xa tawm. Cov cim uas cov npe pib nrog "__rtti_" lossis "__builtin_" yuav tsis muab xa tawm, los pab nrog C ++ DLLs. Thaum kawg, nws muaj ntau yam cim cygwin-tus kheej uas tsis muaj export (obviously, qhov no siv rau thaum tsim DLLs rau cygwin lub hom phiaj).

Cov cygwin-excludes yog: "_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 ", thiab" environ ".

- cim cim-cim cim , cim , ...

Qhia cov npe ntawm cov cim uas yuav tsum tsis txhob xa tawm. Cov cim npe yuav raug txiav los ntawm vauv lossis cov kab ntawv.

--xauv-libs lib , lib , ...

Teev cov npe ntawm cov tsev qiv ntawv ntawm cov cim uas cov cim yuav tsum tsis txhob xa tawm. Lub npe tsev qiv ntawv yuav raug txiav tawm los ntawm cov hnub lossis cov kab ntawv. Specifying "--exclude-libs ALL" excludes cov cim nyob rau hauv tag nrho cov archive cov tsev qiv ntawv los ntawm rho tawm export. Cim ntsees teev nyob rau hauv ib .def cov ntaub ntawv tseem exported, tsis hais qhov kev xaiv no.

- ua kom sib haum

Qhia kom meej cov ntaub ntawv. Cov ntawv hauv cov ntaub ntawv yuav pib ua cov ntaub ntawv offsets uas yog cov zauv ntawm tus xov tooj no. Qhov no sai rau 512.

- txheej txheem

- txheej txheem cia , ua phem

Qhia kom meej tias tus nqi ntawm lub cim xeeb twg (thiab kev yeem ua) yuav tsum tau siv los ua khoom siv rau qhov khoos kas no. Lub neej ntawd yog 1 Mb reserved, 4K cog lus.

- qhov nqi -pib nqi

Siv tus nqi ua qhov chaw nyob ntawm koj qhov kev pab cuam lossis dll. Qhov no yog qhov chaw qis qis tshaj plaws uas yuav raug siv thaum koj qhov kev pab cuam los yog dll raug tso tawm. Yuav kom txo tau qhov xav tau los mus txhim kho thiab txhim kho kev ua haujlwm ntawm koj cov dlls, txhua tus yuav tsum muaj qhov chaw nyob uas tsis tshua muaj thiab tsis sib npaug rau lwm cov dlls. Lub neej ntawd yog 0x400000 rau executables, thiab 0x10000000 rau dlls.

-kill-at

Yog muab, stdcall suffixes (@ nn ) yuav stripped los ntawm cov cim ua ntej lawv exported.

--major-image-version tus nqi

Piav qhov loj tshaj ntawm daim duab 'version version' '. Lub sijhawm rau 1.

- qhov value-os-version tus nqi

Piav qhov loj ntawm tus 'os os' '. Ua rau 4 leeg.

- Major-subsystem-version tus nqi

Teev qhov loj ntawm tus 'subsystem version' '. Ua rau 4 leeg.

- qhov value-image-version tus nqi

Poob tus me me ntawm cov duab 'version version' '. Lub sijhawm rau 0.

- qhov nqis-os-version tus nqi

Poob tus me me ntawm tus 'os os' '. Lub sijhawm rau 0.

--minor-subsystem-version tus nqi

Poob tus me me ntawm tus 'subsystem version' '. Lub sijhawm rau 0.

- tawm lus-def ntaub ntawv

Lub linker yuav tsim cov ntaub ntawv cov ntaub ntawv uas yuav muaj ib daim DEF cov ntaub ntawv coj mus rau DLL qhov linker yog generating. Cov ntaub ntawv DEF (uas yuav tsum tau hu ua "* .def") yuav siv los tsim lub tsev qiv ntawv tuaj txawv teb chaws nrog "dlltool" los yog siv tau los ua ib qho siv los yog cov cim xa tawm tau.

--out-implib ntawv

Lub linker yuav tsim cov ntaub ntawv ua ntaub ntawv uas yuav muaj ib qho kev cai lib coj mus rau DLL qhov linker yog generating. Qhov no ntshuam lib (uas yuav tsum tau hu ua "* .dll.a" los yog "* .a" yuav raug siv los txuas cov neeg tau txais kev pab tiv thaiv DLL generated; tus cwj pwm no ua rau nws tau hla "cais tawm" qiv creation qiv.

- pib-pib-duab-pib

Cia li xaiv cov duab hauv paus rau DLLs, tshwj tsis yog muaj ib qho kev qhia siv lub "-image-base" argument. Los ntawm kev siv lub hash generated ntawm lub dllname los tsim cov duab cim rau txhua DLL, kev sib nco-hauv kev sib tsoo thiab kev cuam tshuam uas tuaj yeem ncua kev ua tiav kev khiav haujlwm.

- pib-pib-duab-pib

Tsis txhob cia tsim kom muaj cov duab zoo li qub. Yog hais tias tsis muaj cov neeg siv kos duab duab ("-image-base") ces siv lub neej ua ntej.

-dll-nrhiav-prefix hlua

Thaum sib txuas dynamically mus rau ib dll tsis muaj ib lub tsev qiv ntawv ntshuam, nrhiav " .dll" nyob rau hauv preference rau "lib .dll". Qhov kev coj cwj pwm no ua rau sib txawv yooj yim ntawm DLLs ua rau ntau yam hauv lub subplatforms: hom, cygwin, uwin, pw, thiab lwm yam. Piv txwv li, cygwin DLLs feem ntau siv "--dll-search-prefix = cyg".

- pib-pib-import

Tsis ntse txuas ntxiv ntawm "_Symbolbol" rau "__imp__symbol" rau DATA tuaj tawm ntawm DLLs, thiab tsim cov cim thunking thaum tsim lub tsev qiv ntawv cov ntawv nrog cov DATAexports. Qhov no feem ntau yuav 'ua hauj lwm' --- tab sis qee zaus koj yuav pom cov lus no:

\ "variab \" tsis tau pib-imported.Please nyeem cov ntaub ntawv rau ld tus "--able-auto-import" kom paub meej. "

Cov lus no tshwm sim thaum qee tus (sub) qhia nkag mus rau qhov chaw nyob thaum kawg ntawm ob qhov kev sib txuas ntawm ob sab (Win32 ntshuam rooj tsuas pub ib qho). Cov xwm txheej uas tshwm sim muaj xws li kev nkag mus rau cov tswv cuab ntawm cov qauv ua txawv ntawm DLL, thiab siv qhov kev ntsuas qhov kev hloov mus rau hauv ib qho txawv ntawm qhov txawv ntawm DLL. Ib qho txawv ntawm cov lus sib txawv (arrays, structs, ntev ntev, thiab lwm yam) yuav ua rau muaj qhov yuam kev no. Txawm li cas los xij, tsis hais cov lus sib txawv ntawm qhov txawv ntawm qhov export exported offend, ld yuav yeej ntes nws, tshaj qhov ceeb toom, thiab tawm.

Muaj ntau txoj hauv kev los daws qhov teeb meem no, tsis hais txog hom ntaub ntawv ntawm qhov txawv txawv exported:

Ib txoj kev yog siv - yuav tsum tau hloov-rawm-pseudo-pseudo-reloc. Qhov no tawm cov hauj lwm ntawm kev xa cov neeg ua tim khawv rau hauv koj tus neeg siv kev cai rau qhov chaw ib puag ncig, yog li no txoj hauj lwm tsuas yog thaum runtime environtment txhawb qhov kev txhawb zog no.

Qhov kev daws teeb meem thib ob yog yuam kom muaj ib qho ntawm qhov 'constants' ua ib qhov txawv txav --- uas yog, tsis paub thiab tsis zoo ntawm lub sijhawm sau. Rau cov arrays, muaj ob txoj hau kev: a) ua qhov indexee (qhov array qhov chaw nyob) tus kuj sib txawv thiab, los sis b) ua qhov 'index' tas li ib qhov txawv. Yog li:

extern hom extern_array []; extern_array [1] -> {tsis ua haujlwm hom * t = extern_array; t [1]}

los yog

extern hom extern_array []; extern_array [1] -> {tsis ua hauj lwm hauv int t = 1; extern_array [t]}

Rau structs (thiab feem ntau lwm hom ntaub ntawv multiword) qhov kev xaiv tsuas yog ua kom cov struct nws tus kheej (lossis qhov ntev ntev, lossis qhov ...) variable:

extern struct s extern_struct; extern_struct.field -> {cov qauv kev hloov chaw s * t = & extern_struct; t-> teb}

los yog

extern ntev ntev extern_ll; extern_ll -> {tsis ntev los ntev * * local_ll = & extern_ll; * local_ll}

Ib feem peb txoj kev soj ntsuam nrog qhov teeb meem no yog tso tseg 'pib-import' rau lub cim cim thiab cim nrog "__declspec (dllimport)". Txawm li cas los xij, hauv kev xyaum uas yuav tsum tau siv cov compile-time #defines los qhia tias koj tab tom tsim DLL, tsim tus neeg siv txoj cai uas yuav txuas rau DLL, los yog pawg tsev / txuas mus rau ib lub tsev qiv ntawv zoo li qub. Hauv kev txiav txim siab ntawm ntau txoj kev los daws qhov teeb meem ntawm qhov chaw nyob ncaj nraim nrog qhov teeb meem, koj yuav tsum xav txog kev siv lub ntiaj teb li cas:

Thawj:

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

Tshuaj 1:

--foo.h extern rau cov menyuam arr []; - foo.c # kuj "foo.h" void main (int argc, char ** argv) {/ * No workaround yog win32 thiab cygwin; tsis txhob "optimize" * / qhov siab heev rau cov menyuam * parr = arr; printf ("% d \"), parr [1]); }

Tshuaj 2:

-Foo.h / * Nco: auto-export yog assumed (tsis muaj __declspec (dllexport)) * / #if (txhais (_WIN32) || txhais (__ CYGWIN__)) && \! (txhais (FOO_BUILD_DLL) | txhais (FOO_STATIC )) #define FOO_IMPORT __declspec (dllimport) #else #define FOO_IMPORT #endif extern FOO_IMPORT int arr []; - foo.c #include "foo.h" void main (int argc, char ** argv) {printf ("% d \ n", arr [1]); }

Ib txoj hauv plaub kom tsis txhob muaj qhov teeb meem no yog rov re-code koj lub tsev qiv ntawv siv lub nruab qhov ua haujlwm tsis yog ntawm cov ntaub ntawv rau cov kev ua txhaum (xws li set_foo () thiab get_foo () accessor functions).

- pib-pib-import

Tsis txhob sim ua sophiasted txuas ntawm "_symbol" rau "__imp__symbol" rau DATAimports los ntawm DLLs.

-enable-runtime-pseudo-reloc

Yog tias koj cov cai muaj cov lus piav qhia hauv -enable-auto-import section, uas yog, DATAimports ntawm DLL nrog cov xoom tsis-offset, qhov kev hloov no yuav tsim ib qho vector ntawm 'runtime pseudo relocations' uas yog siv tau runtime puag ncig los kho cov references rau tej ntaub ntawv hauv koj tus neeg siv khoom.

- rov qab-runtime-pseudo-reloc

Tsis txhob tsim kev pseudo pauv rau cov neeg tsis-xoom offset DATA tawm ntawm DLLs. Qhov no yog lub neej ntawd.

--enable-extra-pe-debug

Qhia ntxiv debug info hais txog nws pib-import cim thunking.

- ua kom sib haum

Txheeb cov lus sib dhos. Cov cim hauv kev nco yuav pib ntawm qhov chaw nyob uas muaj ntau yam ntawm tus xov tooj no. Cov kev tuaj yeem rau 0x1000.

- khoom pov tseg

- Cov khoom pov tseg , ua phem

Qhia kom meej seb qhov cim xeeb ntawm kev khaws cia (thiab kev yeem ua) yuav siv los ua pawg khoos kas no. Lub neej ntawd yog 2 Mb reserved, 4K cog lus.

--Subsystem uas

--Subsystem uas : loj

--Subsystem uas : loj . me me

Qhia meej rau hauv subsystem uas koj qhov kev zov me nyuam yuav ua. Cov kev cai lij choj rau cov "haiv neeg", "windows", "console", thiab "posix". Koj yuav optionally teem lub subsystem version kuj.

Tseem ceeb: Siv tus txiv neej hais kom ua ( % tus txiv neej ) seb qhov kev hais kom raug siv hauv koj lub computer.