Linux Ubuntu / Unix Komando: Id

NAME

ld - Maké LD , anu Lisénsi linker

SYNOPSIS

ld [ pilihan ] objfile ...

gambaran

ld ngagabungkeun sababaraha obyek na arsip file , relocates data maranéhanana jeung dasi up rujukan simbol. Biasana lengkah panungtungan di compiling program téh ditujukeun pikeun ngajalankeun ld.

ld narima Linker Komando file Basa ditulis dina superset sintaksis Patalina Editor Komando Basa AT & T urang, nyadiakeun kadali eksplisit sarta total leuwih proses linking.

Kaca lalaki ieu teu nerangkeun basa paréntah; tingali entri ld di "info", atawa ld manual: nu Lisénsi linker, keur leuwih jelasna dina basa paréntah sarta dina aspék séjén theGNU linker.

Vérsi ieu ld ngagunakeun perpustakaan Tujuan BFD umum pikeun beroperasi dina file obyék. Hal ieu ngamungkinkeun ld maca, ngagabungkeun, sarta nulis file obyék dina loba format béda --- contona, COFF atawa "a.out". format béda bisa jadi dihijijeun ngahasilkeun sagala jenis sadia tina file obyék.

Kumisan ti kalenturan na, anu linker Lisénsi téh beuki mantuan ti linkers sejenna dina méré informasi diagnostik. Loba linkers abandon palaksanaan geuwat kana encountering kasalahan; sabisana, ld terus executing, sahingga anjeun pikeun ngaidentipikasi kasalahan séjén (atawa, dina sababaraha kasus, mun meunang kaluaran file dina spite tina kasalahan).

The Lisénsi linker ld anu dimaksud nutupan rupa-lega situasi, sarta janten salaku cocog sakumaha mungkin kalawan linkers lianna. Hasilna, anjeun boga loba pilihan pikeun ngadalikeun kabiasaan na.

Pilihan

Linker nu ngarojong hiji plethora tina pilihan paréntah-garis , tapi dina praktekna sababaraha sabenerna éta dipaké dina sagala kontéks nu tangtu. Contona, hiji pamakéan sering of ld nyaeta kaitkeun file obyék Unix baku dina standar a, dirojong Sistim Unix . Dina sistem sapertos ieu, kaitkeun file "hello.o":

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

Ieu ngabejaan ld ngahasilkeun file disebut kaluaran salaku hasil tina linking file "/lib/crt0.o" kalawan "hello.o" jeung perpustakaan "libc.a", nu bakal datang tina directories pilarian baku. (Tempo sawala ngeunaan pilihan -l handap.)

Sababaraha pilihan paréntah-garis ka ld bisa jadi dieusian iraha wae titik dina garis paréntah. Sanajan kitu, pilihan nu nujul ka file, kayaning -l atanapi -T, ngakibatkeun file ka dibaca di titik di mana pilihan nu némbongan dina garis paréntah, dulur ka file obyék sarta pilihan payil nu sejenna. Repeating pilihan non-file kalawan argumen béda bakal boh boga pangaruh satuluyna, atawa override kajadian anu lumangsungna prior (pamadegan salajengna ka kénca dina garis paréntah) tina pilihan éta. Pilihan nu bisa jadi meaningfully dieusian leuwih ti sakali anu dicatet dina déskripsi di handap.

alesan non-pilihan téh nyaéta payil obyék atawa arsip nu aya bisa dihijijeun. Éta bisa nuturkeun, miheulaan, atawa jadi dicampurkeun dina kalawan pilihan paréntah-garis, iwal hiji argumen file obyék bisa jadi teu ditempatkeun diantara hiji pilihan tur argumen na.

Biasana linker kasebut invoked kalawan sahanteuna hiji file obyek, tapi anjeun bisa nangtukeun bentuk sejen dina file input binér maké -l, -R, sarta bahasa paréntah naskah. Mun euweuh file input binér pisan anu dieusian, linker nu teu ngahasilkeun kaluaran sagala, jeung isu suratna No file input.

Mun linker nu teu bisa mikawanoh format tina hiji file obyek, eta baris nganggap yén éta téh Aksara linker. A Aksara dieusian ku cara ieu augments Aksara linker utama dipaké pikeun link (boh naskah standar linker atawa salah dieusian ku ngagunakeun -T). fitur ieu idin ka linker kaitkeun ngalawan file nu nembongan jadi hiji obyék atawa hiji arsip, tapi sabenerna saukur ngahartikeun sababaraha nilai simbol, atanapi migunakeun "input" atawa "grup" pikeun muka objék séjén. Catet yén nangtukeun Aksara dina cara kieu saukur augments skrip linker utama; ngagunakeun pilihan -T pikeun ngaganti Aksara linker standar sagemblengna.

Pikeun pilihan anu ngaran téh surat tunggal, alesan pilihan kudu boh nuturkeun hurup pilihan tanpa intervening whitespace, atawa dibikeun jadi alesan misah geuwat handap pilihan anu merlukeun éta.

Pikeun pilihan anu ngaran anu sababaraha hurup, boh salah dash atanapi dua bisa miheulaan nami pilihan; contona, -trace-simbol tur --trace-simbol anu sarua. Catetan - aya hiji iwal mun aturan ieu. Sababaraha pilihan huruf anu mimitian ku hal handap 'o' ngan bisa preceeded ku dua dashes. Ieu pikeun ngurangan kekeliruan jeung pilihan -o. Kitu contona -omagic susunan nami file output keur sulap sedengkeun --omagic susunan bendera NMAGIC on output.

Alesan pikeun pilihan sababaraha-hurup kedah boh leupas tina ngaran pilihan ku hiji sarua tanda, atawa dibikeun jadi alesan misah geuwat handap pilihan anu merlukeun éta. Contona, --trace-simbol foo na --trace-simbol = foo anu sarua. singkatan unik tina ngaran tina pilihan sababaraha-huruf anu ditarima.

Catetan - lamun linker nu keur invoked langsung, via supir kompiler (misalna gcc) lajeng sagala pilihan garis paréntah linker kudu prefixed ku -Wl, (atanapi naon nya luyu keur supir kompiler tinangtu) siga kieu:

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

Ieu penting, sabab lamun heunteu program supir kompiler bisa cicingeun leupaskeun pilihan linker, hasilna tumbu goréng.

Di dieu téh daptar garis paréntah generik saklar ditarima ku linker Lisénsi:

keyword -a

pilihan ieu dirojong pikeun kasaluyuan HP / UX. Argumen keyword kedah janten salah sahiji string arsip, dibagikeun, atawa standar. -aarchive nyaeta functionally sarua jeung -Bstatic, jeung dua konci sejen anu functionally sarua jeung -Bdynamic. pilihan ieu bisa dipaké angka salah sahiji kali.

- A arsitéktur

--architecture = arsitéktur

Dina siaran kiwari ld, pilihan ieu mangpaat ngan pikeun kulawarga Intel 960 tina arsitéktur. Dina éta konfigurasi ld, argumen arsitéktur nangtukeun arsitektur hususna dina 960 kulawarga, anu ngamungkinkeun para sababaraha safeguards na modifying jalur pilarian arsip-perpustakaan.

Kaluaran kahareup ld bisa ngarojong pungsi sarupa pikeun kulawarga arsitéktur lianna.

-b input-format

--format = input-format

ld bisa jadi ngonpigurasi ka ngarojong leuwih ti hiji jenis file obyék. Mun ld anjeun ngonpigurasi cara ieu, anjeun bisa migunakeun pilihan -b mun nangtukeun kana format binér pikeun file input obyék nu nuturkeun pilihan ieu dina garis paréntah. Sanajan ld geus ngonpigurasi ka ngarojong format obyék alternatif, anjeun teu biasana kudu nangtukeun ieu, sakumaha ld kudu ngonpigurasi ka nyangka salaku format input standar éta format paling dawam dina unggal mesin. input-format nyaéta string téks, nami hiji format tinangtu dirojong ku perpustakaan BFD. (Anjeun tiasa daptar format binér sadia kalawan -i objdump.)

Anjeun meureun hoyong nganggo pilihan ieu lamun anu linking payil hiji format binér mahiwal. Anjeun oge bisa make -b mun pindah format eksplisit (lamun linking file objek format béda), ku kaasup -b input-format saméméh unggal grup koropak obyék dina format nu tangtu.

The format standar dicokot tina variabel lingkungan "GNUTARGET".

Anjeun oge bisa ngartikeun format input ti naskah, maké paréntah "udagan";

-c MRI-commandfile

--mri-Aksara = MRI-commandfile

Pikeun kasaluyuan jeung linkers dihasilkeun MRI, ld narima file naskah nu ditulis dina hiji alternatif, basa paréntah diwatesan, digambarkeun dina MRI cocog bagian Payil Script of Lisénsi Dokuméntasi ld. Ngenalkeun MRI file Aksara jeung -c pilihan; ngagunakeun pilihan -T ngajalankeun Aksara linker ditulis dina umum-Tujuan basa ld scripting. Mun MRI-cmdfile teu aya, ld Sigana keur eta di directories dieusian ku sagala pilihan -L.

-d

-dc

-dp

Ieu tilu pilihan anu sarimbag; sababaraha bentuk nu dirojong keur kasaluyuan jeung linkers lianna. Aranjeunna napelkeun spasi mun lambang umum malah lamun file kaluaran relocatable geus dieusian (kalawan -r). Paréntah Aksara "FORCE_COMMON_ALLOCATION" boga pangaruh anu sarua.

éntri -e

--entry = Éntri

Paké Éntri salaku simbol eksplisit keur dimimitian dijalankeunnana program anjeun, tinimbang titik Éntri standar. Lamun teu aya simbol ngaranna Éntri, linker bakal coba mun parse Éntri salaku angka hiji, sareng ngagunakeun éta salaku alamat Éntri (jumlahna bakal diinterpretasi di base 10; anjeun bisa ngagunakeun 0x ngarah pikeun base 16, atawa ngarah 0 keur basa 8).

-E

--export-dinamis

Nalika nyieun hiji laksana dinamis numbu, nambahan sagala lambang ka méja simbol dinamis. Tabel simbol dinamis teh set simbol nu ditingali tina objék dinamis dina waktos ngaji.

Mun anjeun teu nganggo pilihan ieu, tabel simbol dinamis normal bakal ngandung ngan maranéhanana simbol nu referenced ku sababaraha obyek dinamis disebutkeun dina link.

Lamun make "dlopen" pikeun muka hiji objek dinamis nu perlu nujul deui ka simbol ditetepkeun ku program éta, tinimbang sababaraha obyek dinamis sejenna, teras Anjeun meureun bakal perlu migunakeun pilihan ieu lamun linking program sorangan.

Anjeun oge bisa make Aksara Vérsi ngadalikeun kumaha lambang kudu diasupkeun kana tabel simbol dinamis lamun format kaluaran ngarojong eta. Ningali pedaran --version-skrip di @ ref {Vérsi}.

-EB

Numbu objék badag-endian. Ieu mangaruhan format kaluaran standar.

-EL

Link objék saeutik-endian. Ieu mangaruhan format kaluaran standar.

-f

ngaran --auxiliary

Nalika nyieun hiji obyék ELF dibagikeun, pakakas widang DT_AUXILIARY internal ka ngaran husus. Ieu ngabejaan ka linker dinamis anu tabel simbol tina obyek nu dibagikeun kudu dipake salaku hiji filter bantu dina tabel simbol tina ngaran objék dibagikeun.

Lamun engké numbu program a ngalawan obyék filter ieu, lajeng, nalika anjeun ngajalankeun program, nu linker dinamis bakal ningali sawah DT_AUXILIARY. Lamun linker dinamis resolves sagala simbol tina obyek filter, éta mimitina bakal pariksa naha aya harti dina ngaran objék dibagikeun. Lamun aya salah sahiji, éta bakal dipaké gaganti harti dina obyek filter. Ngaran obyék dibagikeun teu kudu aya. Kituna ngaran objék dibagikeun bisa dipaké pikeun nyadiakeun hiji palaksanaan alternatif fungsi nu tangtu, sugan keur debugging atawa pikeun mesin kinerja husus.

pilihan ieu bisa jadi dieusian leuwih ti sakali. Éntri DT_AUXILIARY bakal dijieun dina urutan nu maranéhna muncul di garis paréntah.

ngaran -F

ngaran --filter

Nalika nyieun hiji obyék ELF dibagikeun, pakakas widang DT_FILTER internal ka ngaran husus. Ieu ngabejaan ka linker dinamis anu tabel simbol tina obyek nu dibagikeun nu keur dijieun kudu dipaké salaku filter dina tabel simbol tina ngaran objék dibagikeun.

Lamun engké numbu program a ngalawan obyék filter ieu, lajeng, nalika anjeun ngajalankeun program, nu linker dinamis bakal ningali sawah DT_FILTER. The linker dinamis bakal ngabéréskeun lambang nurutkeun tabel simbol tina obyek filter sakumaha biasa, tapi sabenerna bakal numbu ka dadaran kapanggih dina ngaran objék dibagikeun. Kituna objek filter bisa dipaké pikeun milih sawaréh tina simbol nu disadiakeun ku nami obyék.

Sababaraha linkers heubeul dipaké pilihan -F sapanjang hiji toolchain kompilasi pikeun nangtukeun format obyék-file pikeun duanana asupan jeung kaluaran file obyék. Lisénsi linker migunakeun mékanisme lianna keur kaperluan ieu: -b nu, --format, pilihan --oformat, anu "udagan" paréntah dina Aksara linker, jeung "GNUTARGET" variable lingkunganana. Lisénsi linker bakal malire pilihan -F lamun henteu nyieun hiji obyék ELF dibagikeun.

ngaran -fini

Nalika nyieun hiji laksana ELF atawa obyék dibagikeun, nelepon NAME nalika objek laksana atanapi dibagikeun keur unloaded, ku netepkeun DT_FINI ka alamat tina fungsi nu. Sacara standar, linker ngagunakeun "_fini" salaku fungsi pikeun nelepon.

-g

Teu dipalire. Disadiakeun pikeun kasaluyuan jeung parabot lianna.

nilai -G

--gpsize = nilai

Nyetél ukuran maksimum objék bisa dioptimalkeun ngagunakeun GP register ka ukuran. Ieu ukur bermakna pikeun format file obyék kayaning MIPS ECOFF nu ngarojong putting objék badag sarta leutik kana bagian béda. Ieu dipaliré pikeun format file obyék séjén.

ngaran -h

-soname = ngaran

Nalika nyieun hiji obyék ELF dibagikeun, pakakas widang DT_SONAME internal ka ngaran husus. Nalika hiji laksana numbu ku obyék dibagikeun nu boga widang DT_SONAME, teras lamun laksana nu geus ngajalankeun linker dinamis bakal nyobian muka objek dibagikeun dieusian ku médan DT_SONAME tinimbang ngagunakeun nami file dibikeun ka linker nu.

-abdi

Ngalakukeun link Incremental (sarua salaku pilihan -r).

ngaran -init

Nalika nyieun hiji laksana ELF atawa obyék dibagikeun, nelepon NAME nalika objek laksana atanapi dibagikeun ieu dimuat, ku netepkeun DT_INIT ka alamat tina fungsi nu. Sacara standar, linker ngagunakeun "_init" salaku fungsi pikeun nelepon.

arsip -l

--library = arsip

Tambahkeun arsip file arsip pikeun daptar payil kaitkeun. pilihan ieu bisa dipaké angka salah sahiji kali. ld bakal neangan jalan-daftar na pikeun kajadian anu lumangsungna di "libarchive.a" kanggo unggal arsip dieusian.

Dina sistem nu ngarojong dibagikeun perpustakaan, ld ogé bisa milari perpustakaan kalayan ekstensi lian ti ".a". Husus, dina ELF na SunOS sistem, ld bakal neangan diréktori pikeun a library kalawan penyuluhan ".so" méméh neangan hiji kalawan penyuluhan ".a". Dumasar konvénsi, a ".so" extension nunjukkeun hiji perpustakaan dibagikeun.

linker bakal neangan hiji arsip ngan sakali, di lokasi tempat eta geus dieusian dina garis paréntah. Mun arsip ngahartikeun simbol nu ieu undefined sababaraha obyék nu mucunghul sateuacan arsip on garis paréntah, linker bakal kaasup file luyu (s) ti arsip. Sanajan kitu, hiji simbol undefined dina obyek muncul engké dina garis paréntah moal ngakibatkeun linker ka milarian arsip deui.

Ningali - (pilihan pikeun cara maksa linker ka milarian arsip sababaraha kali.

Anjeun bisa daptar sami arsip sababaraha kali dina garis paréntah.

jenis ieu néangan arsip téh standar pikeun linkers Unix. Sanajan kitu, lamun anjeun maké ld onAIX, dicatet yén éta mah béda ti kabiasaan ti linker AIX.

searchdir -L

--library-jalur = searchdir

Tambahkeun jalur searchdir kana daptar jalur anu ld bakal milari perpustakaan arsip jeung Aksara kontrol ld. Anjeun bisa make pilihan ieu jumlahna salah sahiji kali. The directories anu searched dina urutan nu sipatna dieusian dina garis paréntah. Directories dieusian dina garis paréntah nu searched méméh directories standar. Kabéh pilihan -L dilarapkeun ka sadaya pilihan -l, paduli Urutan numana pilihan némbongan.

Mun searchdir dimimitian kalawan "=", mangka "=" bakal diganti ku awalan sysroot, jalur dieusian nalika linker kasebut ngonpigurasi.

The set standar tina jalur searched (tanpa keur dieusian ku -L) gumantung kana anu ld mode emulation geus maké, sarta dina sababaraha kasus ogé dina sabaraha ieu ngonpigurasi.

Jalur ogé bisa dieusian dina Aksara link kalayan paréntah "SEARCH_DIR". Directories dieusian cara ieu searched di titik nu skrip linker némbongan dina garis paréntah.

emulation -m

Emulate nu linker emulation. Anjeun tiasa daptar emulations sadia jeung --verbose pilihan atawa -V.

Mun pilihan -m henteu dipaké, emulation dicokot tina "LDEMULATION" variable lingkungan, lamun nu diartikeun.

Disebutkeun, emulation standar gumantung kumaha linker ieu ngonpigurasi.

-M

--print-peta

Nyitak peta link ka output baku. Hiji peta link nyadiakeun émbaran ngeunaan link, kaasup di handap:

*

Dimana file obyék jeung simbul anu dipetakeun kana memori.

*

Kumaha lambang umum anu disadiakeun.

*

Kabéh anggota arsip kaasup di link, ku nyebut simbol nu mana ngabalukarkeun anggota arsip pikeun dibawa dina.

-n

--nmagic

Pareuman kaca alignment sahiji bagian, sarta ditandaan kaluaran salaku "NMAGIC" mun mungkin.

-N

--omagic

Atur téks na data bagian janten bisa dibaca tur ditulisan. Ogé, ulah kaca-align bagean data, sarta mareuman linking ngalawan dibagikeun perpustakaan. Lamun format kaluaran ngarojong nomer magic gaya Unix, ditandaan kaluaran salaku "OMAGIC".

--no-omagic

Pilihan ieu negates lolobana balukar pilihan -N. Ieu susunan bagian téks bisa maca-hijina, sarta Angkatan bagean data janten kaca-Blok. Catetan - pilihan ieu teu ngaktipkeun linking ngalawan dibagikeun perpustakaan. Paké -Bdynamic pikeun ieu.

output -o

--output = output

Paké kaluaran salaku nami kanggo program dihasilkeun ld; lamun pilihan ieu henteu dieusian, nami a.out dipaké sacara standar. Paréntah Aksara "output" ogé bisa nangtukeun nami file kaluaran.

tingkat -o

Lamun tingkat mangrupakeun nilai numerik leuwih gede ti nol ld optimizes output. Hal ieu bisa nyandak nyata panjang sahingga sigana mah kudu ngan bisa diaktipkeun keur binér final.

-q

--emit-relocs

Ninggalkeun bagian relokasi sarta eusi dina exececutables pinuh numbu. Pos analisis link na optimasi parabot butuh inpo ieu dina raraga nedunan modifikasi bener executables. Ieu ngakibatkeun executables leuwih gede.

pilihan ieu ayeuna ukur dirojong on platform ELF.

-r

--relocateable

Ngahasilkeun kaluaran relocatable --- ie, ngahasilkeun hiji file output nu bisa di péngkolan ngawula salaku input pikeun ld. Ieu mindeng disebut linking parsial. Salaku éfék samping, di lingkung nu ngarojong nomer magic Unix baku, pilihan ieu ogé susunan angka magic kaluaran file pikeun "OMAGIC". Mun pilihan ieu henteu dieusian, hiji file mutlak dihasilkeun. Nalika linking C ++ program, pilihan ieu moal ngabéréskeun rujukan pikeun konstruktor; mun ngalakukeun eta, nganggo -Ur.

Nalika hiji file input teu boga format sarua salaku file output, linking parsial anu ukur dirojong lamun éta file input henteu ngandung relocations nanaon. format kaluaran béda bisa boga larangan salajengna; contona sababaraha "a.out" format -based teu ngarojong linking parsial kalawan file input dina format sejen pisan.

Pilihan ieu teu hal anu sarua sakumaha -i.

Ngaran koropak -R

--just-simbol = Ngaran koropak

Baca ngaran simbol jeung alamat maranéhanana ti Ngaran koropak, tapi ulah nampanan atawa kaasup dina output. Hal ieu ngamungkinkeun file kaluaran anjeun pikeun ngarujuk symbolically ka lokasi mutlak memori didefinisikeun dina program lianna. Anjeun bisa make pilihan ieu leuwih ti sakali.

Pikeun kasaluyuan jeung linkers ELF sejen, lamun pilihan -R ieu dituturkeun ku ngaran diréktori, tinimbang ngaran koropakna, mangka diperlakukeun salaku pilihan -rpath.

-s

--strip-kabeh

Ngaleungitkeun sagala informasi simbol tina file kaluaran.

-S

--strip-debug

Ngaleungitkeun informasi simbol debugger (tapi teu kabeh simbul) ti file kaluaran.

-t

--trace

Nyitak ngaran payil input sakumaha ld prosés aranjeunna.

scriptfile -T

--script = scriptfile

Paké scriptfile salaku Aksara linker. Aksara ieu ngagantikeun standar Aksara linker ld 's (tinimbang nambahan ka eta), sahingga commandfile kudu nangtukeun sagalana perlu nerangkeun file kaluaran. Mun scriptfile teu aya dina diréktori ayeuna, "ld" Sigana keur eta di directories dieusian ku sagala pilihan -L harita. Sababaraha pilihan -T ngumpulkeun.

-u simbol

--undefined = simbol

Simbol kakuatan bisa diasupkeun dina file kaluaran salaku simbol undefined. Ngalakonan ieu mungkin, contona, pemicu linking tina modul tambahan ti perpustakaan baku. -u bisa diulang ku alesan pilihan béda ngasupkeun simbol undefined tambahan. pilihan Ieu sarua jeung "EXTERN" paréntah Aksara linker.

-Ur

For teu nanaon lian ti program C ++, pilihan ieu sarua jeung -r: eta dibangkitkeun kaluaran relocatable --- ie, hiji file output nu bisa di péngkolan ngawula salaku input pikeun ld. Nalika linking C ++ program, -Ur teu ngabéréskeun rujukan pikeun konstruktor, kawas -r. Teu dianggo ngagunakeun -Ur on file nya éta sorangan dikaitkeun jeung -Ur; sakali tabel constructor geus diwangun, éta teu bisa ditambahkeun kana. Paké -Ur ukur keur link parsial panungtungan, sarta -r keur batur.

--unique [= bagian]

Nyiptakeun bagian kaluaran misah pikeun unggal cocog bagian bagian input, atawa lamun pilihan bonus bagian argumen anu leungit, pikeun tiap bagian input yatim. Hiji bagian yatim hiji moal husus disebutkeun dina Aksara linker. Anjeun bisa make pilihan ieu sababaraha kali dina garis paréntah; Ieu nyegah merging normal tina bagian input nu ngaranna sarua, overriding bagian kaluaran assignments dina Aksara linker.

-V

--version

-V

Nembongkeun jumlah Vérsi pikeun ld. Pilihan -V ogé mangrupa daptar nu emulations didukung.

-x

--discard-kabeh

Mupus sadaya lambang lokal.

-X

--discard-locals

Mupus sadaya lambang lokal samentara. Kanggo sabagéan ageung target, ieu sagala simbol lokal anu ngaran dimimitian ku L.

-y simbol

--trace-simbol = simbol

Nyitak nami unggal file numbu nu simbol nembongan. pilihan ieu bisa dibikeun angka salah sahiji kali. Dina loba sistem perlu prepend hiji underscore.

pilihan Ieu mangpaat lamun anjeun boga hiji simbol undefined di link anjeun tapi teu terang dimana rujukan nu datang ti.

-Y jalur

Tambahkeun jalur ka jalur standar pilarian perpustakaan. pilihan ieu aya pikeun kasaluyuan Solaris.

keyword -z

Related nu dipikawanoh nyaéta "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "ayeuna mah", "asal", "combreloc", "nocombreloc" jeung "nocopyreloc ". Kecap konci sejen anu dipaliré pikeun kasaluyuan Solaris. "Initfirst" nandaan obyék bisa initialized munggaran di runtime méméh sagala objék séjén. "Interpose" nandaan obyék nu méja simbol na interposes sateuacan sadayana simbol tapi laksana primér ". Loadfltr" nandaan obyék nu filtees na diolah geuwat di runtime ". Nodefaultlib" nandaan obyék yén milarian kabebasan obyék ieu bakal malire sagala perpustakaan standar jalur pilarian. "Nodelete" nandaan obyék teu matak unloaded di runtime. "Nodlopen" nandaan obyék henteu sadia pikeun "dlopen". "Nodump" nandaan obyék teu bisa nu kasusun loba di ku "dldump". "Kiwari" nandaan obyék jeung runtime non-puguh ngariung. "Asal" nandaan obyék bisa ngandung $ asalna. "Defs" disallows lambang undefined ". Muldefs" ngamungkinkeun sababaraha definisi. "Combreloc" ngagabungkeun sababaraha bagian reloc na sorts aranjeunna sangkan simbol dinamis lookup cache mungkin.

"Nocombreloc" disables sababaraha bagian reloc ngagabungkeun. "Nocopyreloc" disables produksi relocs salinan.

- (arsip -)

--start-group arsip --end-group

Arsip kedah daptar payil arsip . Éta bisa jadi boh ngaran file eksplisit, atanapi pilihan -l.

arsip nu dieusian anu searched sababaraha kali nepi ka euweuh rujukan undefined anyar anu dijieun. Normal, hiji arsip ieu searched ukur sakali dina urutan nu eta geus dieusian dina garis paréntah. Mun hiji simbol dina arsip anu diperlukeun pikeun ngabéréskeun hiji simbol undefined dimaksud ku hiji obyék dina arsip nu nembongan engké dina garis paréntah, linker teu bakal bisa ngabéréskeun rujukan éta. Ku ngagolongkeun arsip, maranéhna sagala jadi searched sababaraha kali nepi ka sakabeh rujukan mungkin keur ngumbar.

Ngagunakeun pilihan ieu boga waragad kinerja signifikan. Hadé pisan mun éta ngagunakeun eta ukur nalika aya rujukan sirkular bisa nyingkahan antara dua atawa leuwih arsip.

--accept-kanyahoan-input-Arch

--no-nampa-kanyahoan-input-Arch

Ngabejaan linker ka nampa payil input anu arsitéktur teu bisa dipikawanoh. asumsi éta pamaké weruh naon maranéhna ngalakukeun tur ngahaja hayang numbu dina ieu file input kanyahoan. Ieu paripolah standar tina linker, saméméh release 2,14. Paripolah standar ti release 2,14 saterusna nyaeta keur nolak file input misalna, sarta jadi pilihan --accept-kanyahoan-input-Arch geus ditambahkeun kana mulangkeun kabiasaan heubeul.

keyword -assert

Pilihan ieu dipaliré pikeun kasaluyuan SunOS .

-Bdynamic

-dy

-call_shared

Link ngalawan perpustakaan dinamis. Ieu ukur bermakna on platform keur nu dibagikeun perpustakaan anu didukung. pilihan Ieu ilaharna dina standar on platform misalna. The varian béda tina pilihan ieu téh pikeun kasaluyuan jeung sagala rupa sistem. Anjeun bisa make pilihan ieu sababaraha kali dina garis paréntah: mangaruhan néangan perpustakaan pikeun pilihan -l nu nuturkeun eta.

-Bgroup

Nyetél "DF_1_GROUP" bendera di "DT_FLAGS_1" Éntri dina bagian dinamis. Ieu ngabalukarkeun linker runtime pikeun nanganan lookups dina obyek ieu sareng kabebasan -na pikeun dipigawé ngan jero grup. --no-undefined ieu tersirat. Pilihan Ieu ukur bermakna on platform ELF nu ngarojong dibagikeun perpustakaan .

-Bstatic

-dn

-non_shared

-static

Ulah ieu numbu ngalawan dibagikeun perpustakaan. Ieu ukur bermakna on platform keur nu dibagikeun perpustakaan anu didukung. The varian béda tina pilihan ieu téh pikeun kasaluyuan jeung sagala rupa sistem. Anjeun bisa make pilihan ieu sababaraha kali dina garis paréntah: mangaruhan néangan perpustakaan pikeun pilihan -l nu nuturkeun eta.

-Bsymbolic

Nalika nyieun perpustakaan dibagikeun, meungkeut rujukan pikeun lambang global kana harti nu aya dina perpustakaan dibagikeun, upami sagala. Normal, kasebut nyaéta dimungkinkeun pikeun program numbu ngalawan a library dibagikeun ka override definisi dina perpustakaan dibagikeun. pilihan Ieu ukur bermakna on ELFplatforms nu ngarojong dibagikeun perpustakaan.

--check-bagian

--no-pariksa-bagian

Miwarang linker nu teu pariksa alamat bagian sanggeus aranjeunna geus ditugaskeun pikeun nempo lamun aya tumpang tindih nanaon. Biasana linker bakal nedunan dipariksa kieu, sarta lamun eta manggih wae tumpang tindih dinya baris ngahasilkeun seratan kasalahan merenah. linker nu teu nyaho ngeunaan, sarta teu nyieun tunjangan keur bagian di overlays. Paripolah standar bisa dibalikeun ku maké paréntah garis switch --check-bagian.

--cref

Output hiji rujukan tabel cross. Lamun file peta linker keur dihasilkeun, tabel rujukan cross geus dicitak kana file peta. Upami teu kitu, eta anu dicitak dina kaluaran baku.

Format tabél téh ngahaja basajan, meh bisa gampang diolah ku Aksara a upami diperlukeun. Lambang anu dicitak kaluar, dumasar ngaran. Pikeun unggal simbol, daptar ngaran file dirumuskeun. Lamun simbol nu dihartikeun, nu file munggaran didaptarkeun nyaéta lokasi harti nu. Payil sésana ngandung rujukan pikeun simbol nu.

--no-ngartikeun-umum

pilihan ieu nyegah nu ngerjakeun sahiji alamat pikeun lambang umum. Paréntah Aksara "INHIBIT_COMMON_ALLOCATION" boga pangaruh anu sarua.

The --no-ngartikeun-umum pilihan ngamungkinkeun decoupling putusan pikeun napelkeun alamat pikeun lambang nu ilahar tina pilihan tina jenis file kaluaran; disebutkeun hiji non-Relocatable tipe kaluaran pasukan assigning alamat pikeun lambang nu ilahar. Ngagunakeun --no-ngartikeun-umum ngamungkinkeun lambang umum nu referenced ti perpustakaan dibagikeun bisa nangtukeun alamat ukur dina program utama. Ieu eliminates nu henteu kapake duplikat spasi dina perpustakaan dibagikeun, sarta ogé nyegah sagala kabingungan mungkin leuwih resolving ka duplikat salah lamun aya loba modul dinamis jeung jalur pilarian husus pikeun resolusi simbol runtime.

--defsym simbol = ekspresi

Jieun simbol global dina file output, ngandung alamat mutlak dirumuskeun ku éksprési. Anjeun bisa make pilihan ieu saloba kali sakumaha perlu nangtukeun sababaraha lambang dina garis paréntah. A formulir kawates arithmetic ieu dirojong pikeun éksprési dina konteks ieu: anjeun bisa masihan konstanta hexadecimal atanapi nami hiji simbol aya, atawa make "+" jeung "-" pikeun nambahkeun atawa subtract konstanta hexadecimal atanapi simbol. Lamun perlu ungkapan langkung elaborate, mertimbangkeun ngagunakeun basa paréntah linker tina naskah. Catetan: kudu aya euweuh spasi bodas antara simbol, anu sarua jeung asup ( `` = ''), sarta éksprési.

--demangle [= gaya]

--no-demangle

Pilihan ieu ngadalikeun naha mun demangle ngaran simbol dina seratan kasalahan sarta output lianna. Nalika linker kasebut ngawartoskeun ka demangle, éta nyoba nampilkeun ngaran simbol dina fashion dibaca: eta strips underscores ngarah lamun aya dipake ku format file obyék, sarta ngarobah C ++ ngaran simbol mangled kana ngaran dibaca pamaké. compilers béda gaduh gaya mangling béda. The pilihan gaya demangling argumen bisa dipaké pikeun milih hiji gaya demangling luyu pikeun kompiler Anjeun. Linker bakal demangle sacara standar iwal lingkungan variabel COLLECT_NO_DEMANGLE tos disetel. Pilihan ieu bisa dipake pikeun override standar éta.

file --dynamic-linker

Atur ngaran linker dinamis. Ieu ukur bermakna lamun generating executables ELF dinamis numbu. The standar linker dinamis téh ilaharna bener; teu nganggo ieu iwal mun nyaho naon anu anjeun lakukeun.

--embedded-relocs

pilihan Ieu ukur bermakna lamun linking MIPS study kode pic, dihasilkeun ku pilihan -membedded-pic kana compiler Lisénsi na assembler. Ieu ngabalukarkeun linker ka Nyieun tabél anu bisa dipaké dina runtime pikeun nampanan data naon anu statically initialized mun nilai pointer. Tempo kodeu di testsuite / ld-empic pikeun detil.

--fatal-warnings

Ngubaran sadayana warnings sakumaha kasalahan .

--force-EXE-ahiran

Pastikeun yén kaluaran file ngabogaan ahiran .exe.

Mun hiji hasil diwangun pinuh numbu file kaluaran henteu boga ". EXE " atawa " .dll " ahiran, pilihan ieu Angkatan nu linker mun nyalin koropak output keur salah sahiji ngaran anu sarua ku ".exe" ahiran. Pilihan Ieu mangpaat nalika maké unmodified makefiles Unix dina host Microsoft Windows, saprak sababaraha versi ngeunaan Windows moal ngajalankeun hiji gambar iwal eta ends dina ".exe" ahiran.

--no-gc-bagian

--gc-bagian

Aktipkeun kempelan sampah sahiji bagian input henteu kapake. Hal ieu dipaliré on target anu teu ngarojong pilihan ieu. Pilihan ieu henteu cocog sareng -r, atawa kedah dinya dipaké kalawan linking dinamis. Paripolah standar (teu ngajalankeun ieu kempelan sampah ) tiasa disimpen ku nangtukeun --no-gc-bagian dina garis paréntah.

--tulung

Nyitak kasimpulan tina pilihan paréntah-garis dina output baku na kaluar.

--target-pitulung

Nyitak kasimpulan sadaya pilihan husus udagan dina output baku na kaluar.

mapfile -Map

Nyitak peta link ka mapfile file. Ningali pedaran pilihan -M, luhur.

--no-Keep-memori

ld ilaharna optimizes pikeun speed leuwih memori pamakéan ku cache tabél simbol koropak input dina mémori. Pilihan ieu ngabejaan ld ka gantina ngaoptimalkeun pikeun pamakéan memori, ku rereading tabél simbol saperti perlu. Ieu bisa jadi diperlukeun lamun ld ngalir kaluar rohang ingetan bari linking a laksana badag.

--no-undefined

-z defs

Biasana nalika nyieun perpustakaan dibagikeun non-simbolis, lambang undefined anu diwenangkeun tur ditinggalkeun bisa ngumbar ku runtime bastian. Pilihan ieu disallows lambang undefined misalna.

--allow-sababaraha-harti

muldefs -z

Biasana nalika simbol mangrupa diartikeun sababaraha kali, linker bakal ngalaporkeun hiji kasalahan fatal. Pilihan ieu ngidinan sababaraha definisi jeung harti mimiti bakal dipaké.

--allow-shlib-undefined

Ngawenangkeun lambang undefined di objék dibagikeun sanajan --no-undefined tos disetel. Hasil bersih bakal yén simbol undefined di objék nu biasa masih bakal pemicu kasalahan, tapi simbol undefined di objék dibagikeun bakal dipalire. Palaksanaan no_undefined ngajadikeun asumsi yén runtime linker bakal cuk on lambang undefined. Najan kitu aya sahanteuna hiji sistem (BeOS) dimana lambang undefined di dibagikeun perpustakaan téh normal saprak kernel anu patches aranjeunna dina waktos beban pikeun milih anu fungsi anu paling cocok kanggo arsitéktur ayeuna. IE dinamis milih hiji fungsi memset luyu. Tétéla éta ogé normal pikeun HPPA dibagikeun perpustakaan boga lambang undefined.

--no-undefined-versi

Biasana nalika simbol mangrupa boga pérsi undefined, linker bakal malire eta. pilihan ieu disallows lambang kalawan versi undefined sarta kasalahan fatal bakal dikaluarkeun gantina.

--no-ngingetkeun-mismatch

Biasana ld bakal masihan kasalahan lamun coba kaitkeun babarengan file input anu mismatched pikeun sababaraha alesan, sugan lantaran geus disusun pikeun prosesor béda atawa keur endiannesses béda. Pilihan ieu ngabejaan ld nu sakuduna cicingeun diturutan mungkin kasalahan misalna. pilihan ieu kedah ngan dipaké kalayan perawatan, dina kasus mun anjeun geus nyokot sababaraha Peta husus yén ensures yén kasalahan linker anu pantes.

--no-sakabeh-arsip

Pareuman efek pilihan --whole-arsip pikeun file arsip saterusna.

--noinhibit-exec

Ngaropéa nu file kaluaran laksana iraha éta kénéh usable. Normal, linker moal ngahasilkeun kaluaran file lamun eta encounters kasalahan dina mangsa proses link; eta kaluar tanpa tulisan kaluaran file lamun eta isu kasalahan naon sama sekali.

-nostdlib

Ngan neangan directories perpustakaan eksplisit dieusian dina garis paréntah. directories Perpustakaan dieusian dina Aksara linker (kaasup Aksara linker dieusian dina garis paréntah) anu teu dipalire.

--oformat kaluaran-format

ld bisa jadi ngonpigurasi ka ngarojong leuwih ti hiji jenis file obyék. Mun ld anjeun ngonpigurasi cara ieu, anjeun bisa migunakeun pilihan --oformat mun nangtukeun éta format binér keur file kaluaran obyék. Sanajan ld geus ngonpigurasi ka ngarojong format obyék alternatif, anjeun teu biasana kudu nangtukeun ieu, sakumaha ld kudu ngonpigurasi ngahasilkeun salaku format kaluaran standar éta format paling dawam dina unggal mesin. output-format nyaéta string téks, nami hiji format tinangtu dirojong ku perpustakaan BFD. (Anjeun tiasa daptar format binér sadia kalawan -i objdump.) The Aksara paréntah "OUTPUT_FORMAT" ogé bisa nangtukeun nu format output, tapi pilihan ieu overrides eta.

-qmagic

pilihan ieu dipaliré pikeun kasaluyuan Linux.

-Qy

pilihan ieu dipaliré pikeun kasaluyuan SVR4.

--reureuhan

Hiji pilihan jeung mesin épék gumantung. pilihan ieu ukur dirojong dina sababaraha target.

Dina sababaraha platform, pilihan --relax ngalaksanakeun optimizations global nu jadi mungkin nalika linker nu resolves alamat di program, sapertos sayah modus Alamat sarta sintésis parentah anyar dina file kaluaran obyék.

Dina sababaraha platform waktos link optimizations global ieu bisa nyieun simbolis debugging of laksana anu dihasilkeun teu mungkin. Ieu dipikawanoh janten kasus pikeun kulawarga Matsushita MN10200and MN10300 of prosesor.

Dina platform mana ieu teu dirojong, --relax katampi, tapi teu dipalire.

--retain-simbol-file Ngaran koropak

Ngaropéa mung simbol didaptarkeun dina Ngaran koropak file, discarding kabeh batur. Ngaran koropak geus cukup ku hiji file datar, jeung salah sahiji ngaran simbol per garis. pilihan Ieu hususna mangpaat dina lingkungan (kayaning VxWorks) dimana a tabel simbol global badag ieu akumulasi laun, mun conserve memori amprok-waktu.

--retain-simbol-file teu Piceun lambang undefined, atanapi simbol diperlukeun pikeun relocations.

Anjeun ngan bisa nangtukeun --retain-simbol-file sakali dina garis paréntah. Ieu overrides -s na -S.

-rpath dir

Tambahkeun diréktori ka jalur runtime pilarian perpustakaan. Ieu dipake nalika linking hiji ELFexecutable kalawan objék dibagikeun. Kabéh alesan -rpath nu disambungkeun tur diliwatan ka linker runtime, nu migunakeun aranjeunna pikeun maluruh objék dibagikeun di runtime. Pilihan -rpath ogé dipaké nalika locating objék dibagikeun nu diperlukeun ku objék dibagikeun eksplisit kaasup di link; ningali pedaran pilihan -rpath-link. Mun -rpath henteu dipaké nalika linking hiji laksana ELF, eusi lingkungan variable "LD_RUN_PATH" bakal dipaké lamun eta dihartikeun.

Pilihan -rpath bisa ogé dipaké dina SunOS. Sacara standar, on SunOS, linker bakal ngabentuk patch pilarian runtime kaluar sadaya pilihan nu -L eta dirumuskeun. Mun hiji pilihan -rpath dipaké, jalur pilarian runtime bakal kabentuk sacara éksklusif ngagunakeun pilihan -rpath, ignoring pilihan -L. Ieu tiasa mangpaat nalika maké gcc, nu nambihan seueur pilihan -L nu bisa jadi onNFS dipasang filesystems.

Pikeun kasaluyuan jeung linkers ELF sejen, lamun pilihan -R ieu dituturkeun ku ngaran diréktori, tinimbang ngaran koropakna, mangka diperlakukeun salaku pilihan -rpath.

-rpath-link DIR

Lamun maké ELF atawa SunOS, salah perpustakaan dibagikeun bisa merlukeun sejen. Ieu kajadian nalika hiji "ld -shared" link ngawengku hiji perpustakaan dibagikeun salaku salah sahiji file input.

Nalika linker nu encounters kagumantungan saperti nalika ngalakonan link non-dibagikeun, non-relocatable, éta otomatis bakal coba pikeun maluruh perpustakaan dibagikeun ka diperlukeun tur ngawengku eta di link, upami eta teu kaasup sacara eksplisit. Bisi sapertos ieu, pilihan -rpath-link hususna di set mimiti directories neangan. Pilihan -rpath-link bisa nangtukeun tina sekuen ngaran diréktori boh alatan nangtukeun daptar ngaran dipisahkeun ku colons, atawa ku muncul sababaraha kali.

pilihan ieu kudu dipake kalawan caution sakumaha eta overrides jalur pilarian nu mungkin geus teuas disusun kana library dibagikeun. Bisi kitu kasebut nyaéta dimungkinkeun pikeun ngagunakeun ngahaja jalur pilarian béda ti nu runtime linker bakal ngalakukeun.

linker ngagunakeun jalur pilarian handap pikeun maluruh diperlukeun dibagikeun perpustakaan.

1.

Sagala directories dieusian ku pilihan -rpath-link.

2.

Sagala directories dieusian ku pilihan -rpath. Beda antara -rpath na -rpath-link éta directories dieusian ku -rpath pilihan anu kaasup di laksana tur dipaké dina runtime, sedengkeun pilihan -rpath-link anu ngan éféktif dina waktos link. Ieu keur linker pituin wungkul.

3.

Dina hiji sistem ELF, lamun -rpath na "rpath-link" pilihan teu dipake, neangan eusi variabel lingkungan "LD_RUN_PATH". Ieu keur linker pituin wungkul.

4.

Dina SunOS, upami pilihan -rpath teu dipake, milarian naon directories dieusian ngagunakeun pilihan -L.

5.

Pikeun linker pituin, eusi lingkungan variable "LD_LIBRARY_PATH".

6.

Pikeun ELF linker pituin, anu directories di "DT_RUNPATH" atawa "DT_RPATH" of a library dibagikeun téh searched pikeun dibagikeun perpustakaan diperlukeun ku eta. The "DT_RPATH" éntri téh dipaliré lamun "DT_RUNPATH" éntri aya.

7.

The directories standar, ilaharna / lib jeung / usr / lib.

8.

Pikeun linker asli dina hiji sistem ELF, lamun file /etc/ld.so.conf aya, daptar directories kapanggih dina file éta.

Mun perpustakaan dibagikeun ka diperlukeun henteu kapanggih, linker bakal ngaluarkeun gera tur teruskeun link.

-shared

-Bshareable

Jieun perpustakaan dibagikeun. Ieu ayeuna ukur dirojong on ELF, XCOFF na SunOS platform. Dina SunOS, linker nu otomatis baris nyieun perpustakaan dibagikeun lamun pilihan -e teu dipaké tur aya lambang undefined di link.

--sort-umum

Pilihan ieu ngabejaan ld nyortir lambang umum ku ukuranana lamun eta tempat aranjeunna dina bagian kaluaran luyu. Mimiti datangna sagala lambang salah bait, teras sadaya dua bait, teras sadaya opat bait, lajeng sagalana sejenna. Ieu nyegah jurang antawis lambang alatan konstrain alignment.

--split-demi-file [ukuranana]

Sarupa --split-demi-reloc tapi nyiptakeun bagian kaluaran anyar pikeun tiap file input lamun ukuran anu ngahontal. ingkar ukuranana ka ukuran 1 lamun teu dibikeun.

--split-demi-reloc [count]

Nyoba nyieun bagian tambahan dina file kaluaran ambéh henteu bagian kaluaran tunggal dina file ngandung leuwih ti relocations count. Ieu mangpaat nalika generating file relocatable badag pikeun ngundeur kana kernels nyata waktu nu tangtu jeung format COFF obyék file; saprak COFFcannot ngagambarkeun leuwih ti 65535 relocations dina bagian tunggal. Catetan yen ieu bakal gagal pikeun digawe sareng format file obyék nu teu ngarojong bagian wenang. Linker moal dibeulah nepi bagian input individual pikeun redistribution, jadi lamun hiji bagian input tunggal ngandung leuwih ti relocations count hiji bagian kaluaran bakal ngandung nu loba relocations. cacah ingkar ka nilai 32768.

--stats

Itung jeung tampilan statistik ngeunaan operasi linker, sapertos waktos palaksanaan na pamakéan memori.

--traditional-format

Kanggo sababaraha target, kaluaran ld mah béda di sababaraha cara ti kaluaran sababaraha linker aya. Switch Ieu requests ld nganggo format tradisional gantina.

Contona, dina SunOS, ld ngagabungkeun panulisan ganda dina tabel simbol senar. Ieu bisa ngurangan ukuran kaluaran file kalawan informasi debugging pinuh ku leuwih 30 persen. Hanjakal, éta SunOS "dbx" program moal bisa maca program anu dihasilkeun ( "gdb" boga gangguan). The switch --traditional-format ngabejaan ld mun teu ngagabungkeun panulisan ganda.

--section-mimitian sectionname = org

Nomeran hiji bagian di file output di alamat mutlak dirumuskeun ku org. Anjeun bisa make pilihan ieu saloba kali sakumaha perlu nomeran sababaraha bagian dina garis paréntah. org kedah janten integer hexadecimal tunggal; pikeun kasaluyuan jeung linkers sejenna, Anjeun bisa ngaleungitkeun nu ngarah 0x biasana pakait sareng nilai hexadecimal. Catetan: kudu aya euweuh spasi bodas antara sectionname, anu sarua jeung asup ( `` = ''), sarta org.

-Tbss org

-Tdata org

-Ttext org

Paké org salaku alamat dimimitian pikeun --- mungguh --- nu "BSS", "data", atawa "tulisan" bagean ti file kaluaran. org kedah janten integer hexadecimal tunggal; pikeun kasaluyuan jeung linkers sejenna, Anjeun bisa ngaleungitkeun nu ngarah 0x biasana pakait sareng nilai hexadecimal.

--dll-verbose

--verbose

Nembongkeun jumlah Vérsi pikeun ld na daptar emulations linker didukung. Tampilan anu file input tiasa tur teu bisa dibuka. Mintonkeun Aksara linker dipake ku linker nu.

--version-Aksara = versi-scriptfile

Sebutkeun ngaran hiji Aksara versi ka linker nu. Ieu ilaharna dipaké nalika nyieun dibagikeun perpustakaan pikeun nangtukeun émbaran tambahan ngeunaan heirarchy Vérsi pikeun perpustakaan keur dijieun. pilihan Ieu ukur bermakna on platform ELF nu ngarojong dibagikeun perpustakaan.

--warn-umum

Ngingetkeun lamun simbol umum anu digabungkeun jeung simbol umum sejen atawa ku harti simbol. Unix linkers ngawenangkeun praktekna rada beca ieu, tapi linkers on sababaraha sistem operasi séjénna mah henteu. pilihan ieu ngidinan Anjeun pikeun manggihan masalah poténsial ti ngagabungkeun lambang global. Hanjakal, sababaraha perpustakaan C nganggo prakték ieu, sangkan anjeun bisa meunangkeun sababaraha warnings ngeunaan simbol dina perpustakaan ogé dina program Anjeun.

Aya tilu rupa simbol global, gambar didieu ku conto C:

int i = 1;

Hiji harti nu mana dina bagian data initialized sahiji file kaluaran.

extern int i;

Hiji rujukan undefined, nu teu allocate spasi. Kedah aya boh harti atawa simbol umum pikeun wae variabel.

int i;

Hiji simbol umum. Mun aya ukur (salah sahiji atawa leuwih) lambang umum pikeun variabel hiji, éta mana di wewengkon data uninitialized sahiji file kaluaran. linker The merges sababaraha lambang umum keur variabel sarua kana simbol tunggal. Mun aranjeunna tina ukuran béda, éta nyokot ukuran panggedena. linker nu kabukti simbol umum kana deklarasi a, lamun aya harti variabel sarua.

Pilihan --warn-umum bisa ngahasilkeun lima rupa warnings. Unggal warning diwangun ku sapasang garis: kahiji ngagambarkeun simbol ngan encountered, sarta kadua ngagambarkeun simbol saméméhna encountered jeung ngaran anu sarua. Salah sahiji atawa duanana anu dua simbol bakal simbol umum.

1.

Ngaktipkeun simbol umum kana rujukan, sabab geus aya harti pikeun simbol nu.

(): gera: umum tina ` 'ditindes ku harti (): gera: diartikeun dieu

2.

Ngaktipkeun simbol umum kana rujukan, sabab harti engké pikeun simbol nu geus encountered. Ieu sarua jeung hal saméméhna, iwal yén simbol anu encountered dina urutan béda.

(): gera: harti ` 'overriding umum (): gera: biasa nya didieu

3.

Merging simbol umum sareng simbol umum saméméhna sami-ukuran.

(): gera: sababaraha umum tina ` ' (): gera: umum saméméhna nyaéta dieu

4.

Merging simbol umum sareng simbol umum gedé saméméhna.

(): gera: umum tina ` 'ditindes ku umum gedé (): gera: biasa badag nya didieu

5.

Merging simbol umum sareng simbol umum leuwih leutik saméméhna. Ieu sarua jeung hal saméméhna, iwal yén simbol anu encountered dina urutan béda.

(): gera: umum tina ` 'overriding umum leuwih leutik (): gera: umum leuwih leutik nya didieu

--warn-konstruktor

Ngingetkeun lamun sagala konstruktor global anu dipaké. Ieu ukur mangpaat pikeun sababaraha format file obyék. Pikeun format kawas COFF atanapi ELF, linker nu teu tiasa ngadeteksi pamakéan konstruktor global.

--warn-sababaraha-GP

Ngingetkeun lamun sababaraha nilai pointer global anu diperlukeun dina berkas kaluaran . Ieu ukur bermakna pikeun prosesor tangtu, saperti Alpha. Husus, sababaraha prosesor nempatkeun konstanta badag-hargana dina bagian husus. A register husus (dina pointer global) nunjuk ka tengah bagian ieu, ku kituna konstanta bisa dimuat epektip via mode basa-ngadaptar relatif alamat. Ti offset di base-ngadaptar mode relatif nya tetep na relatif leutik (misalna 16 bit), ieu watesan ukuran maksimum dina kolam renang konstan. Ku kituna, dina program badag, éta mindeng kudu maké sababaraha nilai pointer global guna tiasa alamat sagala konstanta mungkin. pilihan ieu ngabalukarkeun warning bisa dikaluarkeun iraha hal ieu lumangsung.

--warn-sakali

Ngan ngingetkeun sakali pikeun tiap simbol undefined, tinimbang sakali per modul nu nujul kana eta.

--warn-bagian-align

Ngingetkeun mun alamat tina hiji bagian kaluaran dirobah kusabab alignment. Ilaharna, alignment bakal diatur ku hiji bagian input. Alamat bakal ngan bisa dirobah lamun eta henteu eksplisit dieusian; nyaeta, lamun nu "Bagean" paréntah henteu nangtukeun alamat mimiti keur bagian nu.

--whole-arsip

Pikeun unggal arsip disebutkeun dina garis paréntah sanggeus pilihan --whole-arsip, kaasup unggal file obyék dina arsip dina link, tinimbang neangan arsip pikeun file obyék diperlukeun. Ieu ilaharna dipaké pikeun ngahurungkeun hiji file arsip kana library dibagikeun, forcing unggal nenda bisa kaasup di perpustakaan dibagikeun anu dihasilkeun. pilihan ieu bisa dipaké leuwih ti sakali.

Dua catetan nalika ngagunakeun pilihan ieu ti gcc: Kahiji, gcc teu nyaho ngeunaan pilihan ieu, jadi Anjeun kudu make -Wl, -whole-arsip. Kadua, ulah poho ngagunakeun -Wl, -no-sakabeh-arsip sanggeus daptar Anjeun arsip, sabab gcc bakal nambahan daftar sorangan arsip pikeun link anjeun jeung anjeun teu hoyong bandéra ieu mangaruhan jalma ogé.

--wrap simbol

Ngagunakeun fungsi wrapper keur simbol. Sagala rujukan undefined kana simbol bakal ngumbar ka "__ wrap_symbol". Sagala rujukan undefined ka "__real_symbol" bakal ngumbar kana simbol.

Ieu bisa dipaké pikeun nyadiakeun wrapper pikeun fungsi sistem. Fungsi wrapper kudu disebut "__wrap_symbol". Lamun wishes nyauran fungsi sistem, sakuduna nelepon "__ real_symbol".

Di dieu téh conto trivial:

batal * __wrap_malloc (int c) {printf ( "malloc disebut kalayan% ld \ n", c); balik __real_malloc (c); }

Lamun ieu numbu kode sejenna kalawan file ieu ngagunakeun malloc --wrap, teras sadayana asup ka "malloc" bakal nelepon ka fungsi "__wrap_malloc" gantina. panggero ka "__real_malloc" dina "__wrap_malloc" bakal nelepon nyata "malloc" fungsi.

Anjeun bisa hayang nyadiakeun hiji "__real_malloc" fungsi ogé, jadi nu Tumbu tanpa pilihan --wrap bakal sukses. Lamun ngalakukeun ieu, Anjeun teu kudu nempatkeun ngartikeun "__ real_malloc" dina file anu sarua sakumaha "__wrap_malloc"; lamun ngalakukeun, assembler nu bisa ngabéréskeun panggero teh sateuacan linker ngabogaan kasempetan pikeun mungkus ka "malloc".

--enable-anyar-dtags

--disable-anyar-dtags

linker Ieu bisa nyieun tag dinamis anyar dina ELF. Tapi sistem ELF heubeul teu ngartos aranjeunna. Lamun tangtukeun --enable-anyar-dtags, anu tag dinamis bakal dijieun salaku diperlukeun. Lamun tangtukeun --disable-anyar-dtags, teu tag dinamis anyar bakal dijieun. Sacara standar, anu tag dinamis anyar teu dijieun. Catetan yen jalma pilihan nu ngan sadia sistem forELF.

The i386 pe linker ngarojong pilihan -shared, nu ngabalukarkeun kaluaran ka janten perpustakaan dinamis numbu (DLL) tinimbang hiji laksana normal. Anjeun kudu ngaranan kaluaran "* .dll" mun anjeun migunakeun pilihan ieu. Sajaba ti éta, linker nu pinuh ngarojong standar "* .def" file, nu bisa jadi dieusian dina garis paréntah linker kawas hiji file obyék (dina kanyataan, sakuduna miheulaan arsip éta ékspor simbol tina, pikeun mastikeun yén maranéhna meunang ditumbukeun dina, ngan kawas file obyék normal).

Sajaba pilihan umum ka sadaya target, anu i386 pe rojongan linker tambahan pilihan garis paréntah anu husus jeung udagan i386 pe. Pilihan nu nyandak nilai mungkin leupas tina nilai ku cara boh spasi atawa hiji sarua tanda.

--add-stdcall-landian

Mun dibikeun, simbol ku ahiran stdcall (@ NN) bakal diékspor sakumaha-nya sarta ogé ku ahiran dilucuti.

file --base-file

Paké file salaku nami file nu nyimpen alamat dasar sakabéh relocations diperlukeun pikeun generating DLLs kalawan dlltool.

--dll

Jieun DLL tinimbang hiji laksana biasa. Anjeun oge bisa make -shared atanapi tangtukeun "Perpustakaan" dina dibikeun ".def" file.

--enable-stdcall-fixup

--disable-stdcall-fixup

Mun link manggih simbol yén éta moal bisa ngabéréskeun, éta bakal nyobian ngalakukeun `` linking Fuzzy '' ku pilari simbol diartikeun sejen nu beda ngan dina format tina ngaran simbol (cdecl vs stdcall) jeung bakal ngabéréskeun simbol yen ku linking mun pertandingan. Contona, dina undefined simbol "_foo" bisa dikaitkeun kana fungsi "_foo @ 12", atawa undefined simbol "_bar @ 16" bisa dikaitkeun kana fungsi "_bar". Nalika linker nu teu ieu, eta prints gera, saprak éta normal sakuduna gagal kaitkeun, tapi kadang perpustakaan impor dihasilkeun tina dlls pihak-katilu mungkin perlu fitur ieu janten usable. Lamun tangtukeun --enable-stdcall-fixup, fitur ieu pinuh diaktipkeun jeung warnings teu dicitak. Lamun tangtukeun --disable-stdcall-fixup, fitur ieu mangrupa ditumpurkeun na mismatches sapertos nu dianggap kasalahan.

--export-sadaya-lambang

Mun dibikeun, sagala simbol global dina objék dipaké pikeun ngawangun hiji DLL bakal diékspor ku DLL dina. Catetan yen ieu standar éta lamun aya disebutkeun teu bakal sagala simbol diékspor. Lamun simbol anu kuduna diékspor via file TKR atanapi implicitly diékspor via atribut fungsi, standar téh moal ngekspor lain nanaon iwal pilihan ieu dirumuskeun. Catetan yén simbol "DllMain @ 12", "DllEntryPoint @ 0", "DllMainCRTStartup @ 12", sarta "impure_ptr" moal otomatis diékspor. Ogé, simbol diimpor ti DLLs sejenna moal ulang diékspor, atawa bakal lambang nangtukeun perenah internal nu DLL urang kayaning pamadegan dimimitian ku "_head_" atawa tungtung "_iname". Sajaba ti éta, aya lambang tina "libgcc", "libstd ++", "libmingw32", atawa "crtX.o" bakal diékspor. Simbol anu ngaran dimimitian ku "__rtti_" atawa "__builtin_" moal diékspor, pikeun mantuan kalawan C ++ DLLs. Tungtungna, aya hiji daptar éksténsif ngeunaan lambang cygwin-pribadi anu teu diekspor (écés, ieu manglaku on nalika ngawangun DLLs keur target cygwin).

Ieu cygwin-heunteu aya: "_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 ", sarta" environ ".

--exclude-simbol simbol, simbol, ...

Hususna daptar simbol nu teu kudu otomatis diékspor. Ngaran simbol bisa jadi delimited ku koma atanapi colons.

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

Hususna daptar pustaka arsip ti mana simbol teu kudu otomatis diékspor. Ngaran perpustakaan bisa jadi delimited ku koma atanapi colons. Nangtukeun "--exclude-libs ALL" heunteu ngasupkeun simbol dina sakabéh pustaka arsip ti ékspor otomatis. Lambang eksplisit didaptarkeun dina file .def anu masih diékspor, paduli pilihan ieu.

--file-alignment

Sebutkeun alignment file. Bagean dina file bakal salawasna dimimitian dina offsets file nu lilipetan tina jumlah ieu. Ieu ingkar kana 512.

cagar --heap

cagar --heap, bunuh

Sebutkeun jumlah ELINGAN KA URANG cagar (jeung optionally bunuh) bisa dipake salaku numpuk pikeun program ieu. standar kasebut 1Mb ditangtayungan, 4k komitmen.

nilai --image-base

Paké nilai salaku alamat dasar program anjeun atanapi dll. Ieu lokasi memori panghandapna anu bakal dipaké nalika program anjeun atanapi dll anu dimuat. Pikeun ngurangan kudu nampanan tur ningkatkeun kinerja dlls anjeun, tiap kudu boga alamat base unik teu tumpang tindih sagala dlls lianna. standar kasebut 0x400000 pikeun executables, sarta 0x10000000 pikeun dlls.

--kill-di

Mun dibikeun, nu suffixes stdcall (@ NN) bakal dilucuti tina simbol saméméh maranéhna téh diékspor.

--major-gambar-versi nilai

Susunan jumlah utama tina `` Vérsi gambar ''. Ingkar kana 1.

--major-OS-versi nilai

Susunan jumlah utama tina `` Vérsi OS ''. Ingkar kana 4.

--major-subsistem-versi nilai

Susunan jumlah utama tina `` Vérsi subsistem ''. Ingkar kana 4.

--minor-gambar-versi nilai

Susunan jumlah minor tina `` Vérsi gambar ''. Ingkar kana 0.

--minor-OS-versi nilai

Susunan jumlah minor tina `` Vérsi OS ''. Ingkar kana 0.

--minor-subsistem-versi nilai

Susunan jumlah minor tina `` Vérsi subsistem ''. Ingkar kana 0.

--output-TKR file

Linker bakal nyieun file file nu bakal ngandung hiji file TKR pakait kana DLL linker kasebut generating. file TKR ieu (nu kudu disebut "* .def") bisa dipaké pikeun nyieun hiji perpustakaan impor jeung "dlltool" atawa bisa dipaké salaku rujukan pikeun otomatis atawa implicitly diékspor simbol.

--out-implib file

Linker bakal nyieun file file nu bakal ngandung hiji lib impor pakait kana DLL linker kasebut generating. impor Ieu lib (anu kudu disebut "* .dll.a" atawa "* .a" bisa dipaké pikeun numbu klien ngalawan DLL dihasilkeun; kabiasaan ieu ngamungkinkeun keur skip a misah "dlltool" kreasi perpustakaan impor hambalan.

--enable-otomatis-gambar-base

milih otomatis basa gambar pikeun DLLs, iwal hiji nu dieusian ngagunakeun "--image-base" argumen. Ku ngagunakeun Hash dihasilkeun tina dllname ka nyieun basa gambar unik keur unggal DLL, dina-memori collisions na relocations nu bisa reureuh palaksanaan program anu merlukeun dibedah.

--disable-otomatis-gambar-base

Ulah otomatis ngahasilkeun basa gambar unik. Lamun teu aya dasar-dieusian pamaké gambar ( "--image-base") lajeng nganggo standar platform.

--dll-search-awalan string

Nalika linking dinamis jeung dll tanpa hiji perpustakaan impor, milari " .dll" dina leuwih sering dipake tinimbang "lib .dll". kabiasaan Hal ieu ngamungkinkeun gampang bedana antara DLLs diwangun keur rupa `` subplatforms '': asli, cygwin, uwin, pw, jsb Contona, DLLs cygwin ilaharna make "--dll-search-awalan = cyg".

--enable-otomatis-impor

Naha linking canggih tina "_symbol" pikeun "__imp__symbol" kanggo impor DATA ti DLLs, sarta nyieun lambang thunking diperlukeun nalika ngawangun perpustakaan impor jeung pamadegan DATAexports. Ieu umumna bakal 'ngan dianggo' --- tapi kadang anjeun bisa nempo suratna kieu:

"Variable '' teu kaci otomatis-diimpor. Mangga baca dokuméntasi pikeun ld urang" --enable-otomatis-impor "kanggo rinci".

pesen ieu lumangsung nalika sababaraha (sub) ekspresi aksés alamatna pamustunganana dirumuskeun ku jumlah dua konstanta (Win32 tabel impor wungkul ngawenangkeun hiji). Instansi mana ieu bisa lumangsung kaasup aksés ka SAWAH anggota variabel struct diimpor ti DLL a, kitu ogé maké indéks konstan kana hiji variabel Asép Sunandar Sunarya diimpor ti DLL a. Sagala variabel multiword (arrays, structs, lila lila, jsb) bisa memicu kaayaan kasalahan ieu. Sanajan kitu, henteu paduli kana tipe data pasti ngeunaan variabel offending diékspor, ld bakal salawasna ngadeteksi éta, masalah gera, sarta kaluar.

Aya sababaraha cara pikeun alamat kasusah ieu, paduli tipe data tina variabel diékspor:

Hiji cara anu ngagunakeun --enable-runtime-pseudo-reloc switch. Ieu daun tugas nyaluyukeun rujukan dina kode klien anjeun lingkungan runtime, jadi metoda ieu jalan ukur nalika runtime environtment ngarojong fitur ieu.

Hiji leyuran kadua maksa salah sahiji 'konstanta' janten variabel a --- nyaeta, kanyahoan sarta un-optimizable dina waktos compile. Pikeun arrays, aya dua kemungkinan: a) sangkan indexee (alamat Asép Sunandar Sunarya urang) variabel a, atawa b) nyieun indéks 'konstan' variabel a. kituna:

extern tipe extern_array []; extern_array [1] -> {tipe volatile * t = extern_array; t [1]}

atawa

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

Pikeun structs (jeung paling jenis data multiword lianna) hijina pilihan nyaeta nyieun struct sorangan (atawa panjang panjang, atawa ...) variabel:

extern struct s extern_struct; extern_struct.field -> {volatile struct s * t = & extern_struct; t-> widang}

atawa

extern extern_ll lila lila; extern_ll -> {volatile lila lila * local_ll = & extern_ll; * Local_ll}

Hiji métode katilu kaayaan kasulitan ieu mun abandon 'otomatis-impor' pikeun simbol offending sarta ditandaan kalayan "__declspec (dllimport)". Sanajan kitu, dina prakna nu merlukeun maké compile-waktos #defines keur nandaan naha anjeun ngawangun DLL a, ngawangun kode klien anu bakal numbu ka DLL, atanapi saukur gedong / linking ka perpustakaan statis. Dina nyieun pilihan nu antara rupa metode resolving nu 'Alamat langsung kalawan konstan offset' masalah, anjeun kudu mertimbangkeun pamakéan real-dunya has:

aslina:

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

Solusi 1:

--foo.h extern int arr []; --foo.c #include "foo.h" batal utama (int argc, char ** argv) {/ * workaround Ieu keur win32 na cygwin; ulah "ngaoptimalkeun" * / volatile int * parr = arr; printf ( "% d \ n", parr [1]); }

Solusi 2:

--foo.h / * Catetan:! otomatis-ékspor dianggap (teu __declspec (dllexport)) * / #if (didefinisikeun (_WIN32) || diartikeun (__ CYGWIN__)) && \ (didefinisikeun (FOO_BUILD_DLL) || diartikeun (FOO_STATIC )) #define FOO_IMPORT __declspec (dllimport) #else #define FOO_IMPORT #endif extern FOO_IMPORT int arr []; --foo.c #include "foo.h" batal utama (int argc, char ** argv) {printf ( "% d \ n", arr [1]); }

Hiji cara kaopat ulah masalah ieu ka ulang kodeu perpustakaan anjeun pikeun ngagunakeun panganteur hanca tinimbang panganteur data keur variabel offending (misalna set_foo () sarta get_foo () fungsi accessor).

--disable-otomatis-impor

Ulah nyobian do linking sophisticalted tina "_symbol" pikeun "__imp__symbol" kanggo DATAimports ti DLLs.

--enable-runtime-pseudo-reloc

Lamun kode anjeun ngandung ungkapan digambarkeun dina bagian --enable-otomatis-impor, nyaeta, DATAimports ti DLL kalawan non-enol offset, switch ieu bakal nyieun vektor tina 'runtime pseudo relocations' nu bisa dipake ku lingkungan runtime nyaluyukeun rujukan mun data sapertos dina kode klien Anjeun.

--disable-runtime-pseudo-reloc

Ulah nyieun relocations pseudo keur non-enol impor DATA offset ti DLLs. Ieu standar éta.

--enable-tambahan-pe-debug

Témbongkeun tambahan info debug patali otomatis-impor simbol thunking.

--section-alignment

Susunan bagian alignment. Bagean dina mémori bakal salawasna dimimitian dina alamat nu aya kakalian angka ieu. Ingkar kana 0x1000.

cagar --stack

cagar --stack, bunuh

Sebutkeun jumlah ELINGAN KA URANG cagar (jeung optionally bunuh) bisa dipake salaku tumpukan pikeun program ieu. standar kasebut 2Mb ditangtayungan, 4k komitmen.

--subsystem nu

--subsystem mana: utama

--subsystem mana: utama. minor

Hususna dina subsistem ngabawah program anjeun bakal ngaéksekusi. Nilai légal keur nu "asli", "jandéla", "konsol", sarta "posix". Anjeun optionally bisa diatur versi subsistem ogé.

Nu penting: Paké paréntah lalaki (% lalaki) ningali kumaha paréntah nu dipaké dina komputer husus Anjeun.