Linux / Unix Command: Ид

NAME

LD - LD колдонуп , GNU Азаттык

Кыскача баяндама

л [ параметрлери ] objfile ...

DESCRIPTION

LD объект жана Archive бир катар бириктирген материалдарын , маалыматтарын кайнаганынан жана белгиси булактарды байлайт. Адатта программасын түзүүнүн акыркы кадам LD чуркап турат.

LD Азаттык кабыл Command Тили AT & T анын Link Editor Command Тили Синтаксистин бир superset жазылган материалдары, шилтемени жараянынын ачык жана жалпы контролду камсыз кылуу.

Бул адам барак буйрук тилинде көрсөтүлгөн эмес; "маалымат" деген LD жазууну көрүп, же кол LD: GNU Бартош, буйрук тили боюнча толук маалымат алуу үчүн жана theGNU Азаттык башка аспектилери боюнча.

LD бул версия объект документтеринде боюнча иш жалпы максат BFD китепканаларын колдонот. Бул LD окуп, комбайн жана үлгү үчүн --- ар кандай түрдө объект документ жазып берет COFF же "a.out". Ар түрдүү баа объект берилген ар кандай жеткиликтүү түрүн өндүрүү менен бирге тыгыз байланышта болушу мүмкүн.

Даже ийкемдүү келип, GNU Азаттык диагностикалык маалымат менен камсыз кылуу боюнча башка linkers караганда көбүрөөк пайдалуу. Көптөгөн linkers дароо ката калганын көрүп аткарууну таштап; мүмкүн болсо, LD башка каталарды аныктоого мүмкүндүк берүүчү, аткаруу (же, айрым учурларда, ката карабастан өндүрүштүн билэни алуу үчүн) улантууда.

GNU Азаттык л кырдаалдар кенен аймагын камтыйт, жана башка linkers менен мүмкүн болушунча туура болушу керек. Натыйжада, анын жүрүм-турумуна контролдук кылууга көп жолу чечим бар.

OPTIONS

Азаттык тууралуу аттыга колдойт буйрук сап жолдору , бирок алардын иш жүзүндөгү тажрыйба бир нече ар кандай контексттен алганда колдонулат. Мисалы, LD бир көп пайдалануу колдоого, стандарттын стандарттык Unix объект материалдары байланыштыра турган Unix системасы . Мындай система жөнүндө, сөп "hello.o" -га шилтеме берген барактар

л епо <чыгаруу> /lib/crt0.o hello.o -lc

Бул стандарттык издөө каталогдорго келип сааты "/lib/crt0.o" "hello.o" жана китепкана "libc.a" менен байланыштырып натыйжасында чыгаруу деген билэни өндүрүү үчүн LD айтылат. (Төмөндө -l тандоосу боюнча талкууну карагыла.)

Кээ бир буйрук сап жолдору LD үчүн буйрук сабында кандайдыр бир жеринде белгилениши мүмкүн. Бирок, мисалы, -l же -T, билэни себеп катары материалдар тиешелүү параметрлери, анда объект делолорун жана башка билэ жолдору салыштырмалуу буйрук сабында, пайда турган учурда керек. башка жол менен эмес билэ ыкмаларды кайталоо үчүн тандап ала алган (буйрук сабында калган адамдар андан ары), же мындан ары таасир этет, же жокко чыгара алат. жетик эмес, бир нече жолу көрсөтүлүшү мүмкүн төмөндө нускамаларында белгиленген.

Келишимдик параметр жүйөлөр обжек бирге тыгыз байланышта болушу керек архив болуп саналат. Алар обжек жүйөө тандоосу жана анын аргументи ортосунда коюлушу мүмкүн эмес экенин эске албаганда, озуп, же буйрук сап жолдору менен аралашкан болушу ыктымал.

Адатта Азаттык жок дегенде бир объект материалдары менен дуба кылды, бирок сиз -l, -r, жана жазма буйрук тилин колдонуп бинардык киргизүү материалдарын башка түрлөрүн көрсөтүүгө болот. Бардык көрсөтүлгөн эч кандай бинардык киргизүү Files болсо, анда эч кандай Азаттык көбурөөк пайда алып келбесе, ошондой эле кабар эч киргизүү материалдары чыгарат.

Азаттык объект берилген түзүлүшү таануу мүмкүн эмес болсо, анда ал бир Азаттык скрипт деп болжолдоого болот. Ушундай жол менен көрсөтүлгөн жазуусу шилтеме (же демейки Азаттык скрипт же -T колдонуу менен көрсөтүлгөн) үчүн пайдаланылуучу негизги Азаттык скрипттер өрчүндөйт. Бул өзгөчөлүк бир буюмду же Archive көрсөтүлгөн делосуна каршы байланыштыра Бартош жол, бирок, иш жүзүндө жөн гана кээ бир белгиси баалуулуктарын, же башка объекттерди жүктөй "киргизүү" же "GROUP" деген аныктама берилет. Мындай жол менен скрипт көрсөтүү гана башкы Азаттык скрипт өрчүндөйт кетсек; толугу менен демейки Азаттык арибин ордуна -T параметрин колдоно.

аттары бир тамга бар жолдору үчүн, параметр аргументтер Художник кийлигишпестен параметр кат жолдоого тийиш, же өзүнчө аргумент катары ошол замат аларды талап тандоосу боюнча берилет.

алардын ысымдары бир нече тамгалар өзгөртүү үчүн, бир сызыкча же эки параметр аты алдында болот; Мисалы, районы-белгиси жана --trace-белгиси барабар. Эскертүү - бул эреже бир өзгөчөлүк бар. төмөн жагдайдын 'O' башталат нече кат параметрлери эки гана тире менен preceeded болот. Бул епо тандоосу менен аралашып кыскартуу болуп саналат. Ошондуктан, мисалы, иштеп чыгуусуна, NMAGIC желегин орнотот --omagic эми сыйкырланып чыгаруу билэ атын калтырган -omagic.

бир нече кат параметрлерине далилдерди же бир барабар белгисин тарабынан тандоо аты бөлүнүп, же өзүнчө аргумент катары ошол замат аларды талап тандоосу төмөнкүдөй берилүүгө тийиш. Мисалы, --trace-белгиси Күлкү жана --trace-белгиси = баллада барабар. бир нече тамга тандоо аттарын Unique кыскартуулар кабыл алынат.

Эскертүү - Азаттык кыйыр түрдө дуба жатат, бир компилятор айдоочу аркылуу (мисалы, ДжСС), анда бардык Азаттык буйрук сап параметрлери -Wl жакка керек, (же биринчи орунда өзгөчө компилятор айдоочу туура эмес), бул сыяктуу эле, эгерде:

ДжСС -Wl, - startgroup foo.o bar.o -Wl, - endgroup

Бул, эгерде компилятор айдоочу программасы унчукпай жаман шилтеме натыйжасында Азаттык ыкмаларды төмөндөйт, анткени, маанилүү болуп саналат.

Бул жерде жалпы командалык саптан GNU Азаттык тарабынан кабыл алынган көрсөткүчтөрдү бир дасторкон:

-a ачкыч

Бул параметр HP / UX шайкеш келүү үчүн гана колдоого алынат. Ачкычтуу сүйлөм боюнча аргумент бири болушу керек саптар чыкпаган, чогуу, же абалкы. -aarchive -Bstatic үчүн апуу барабар, жана башка эки ачкыч -Bdynamic үчүн апуу барабар. Бул параметр убакта болбосун колдонулушу мүмкүн.

- А архитектура

--architecture = архитектура

LD учурда бошотуу, бул параметр гана архитектураны Intel 960 үй-бүлө үчүн да пайдалуу. Ошол LD түзүмүн-жылы, архитектура аргумент чараларды камсыз кылуу жана Archive-китепкана издөө жолун өзгөртүүдөн, 960 үй-бүлөнүн, айрыкча архитектура аныктайт.

LD келечеги релиздер башка архитектура үй-бүлөлөр үчүн ушундай иш- колдоого алат.

киргизүү-формат

--format = киргизүү-формат

LD объект Билэ бир эмес, бир нече түрүн колдоого өзгөрүүлөр болушу мүмкүн. Сиздин LD бул жол өзгөрүүлөр болсо, командалык саптан бул параметрди ылайык киргизүү объект билэлэри бинардык түзүлүшү тактоо -b параметрин колдоно аласыз. LD альтернатива объект түрлөрүн колдоо үчүн багытталган күндө да, сиз LD демейки киргизүү түрдө ар бир машинанын көпчүлүк кадимки түзүлүшү күтүү өзгөрүүлөр болушу керек деп, адатта, бул көрсөтүү керек. киргизүү-формат Текст сап, BFD китепканалар тарабынан колдоого алынган бир түрдө аталышы. (Сиз objdump -i менен жеткиликтүү экилик тизме болот.)

Эгер өзгөчө бинардык түрдө менен материалдары менен байланыштырып, анда бул параметрди колдонуу керек болушу мүмкүн. Ошондой эле ачык-айкын түрлөрүн которуштуруу үчүн -b пайдалануу (ар түрдүү түрдө объектиси материалдары байлоо жатканда), белгилүү бир түрдө объект материалдарын ар бир топтун алдында -b киргизүү-түзүлүшү, анын ичинде берет.

демейки формат чөйрөсү өзгөрмөнүн "GNUTARGET" алынат.

Ошондой эле, буйрук "максаттуу" колдонуп, скрипт киргизүү түзүлүшү аныктоого болот;

-C MRI-commandfile

--mri-скрипт = MRI-commandfile

ЭРИ өндүрүлгөн linkers менен иштөө үчүн, LD GNU LD документтерди MRI бири-бирине шайкеш Script Files бөлүмүндө жазылган жазуусу запастагы жазылган материалдары, чектелген буйрук тилин, кабыл алат. Параметр -C менен MRI жазма материалдары киргизүү; жалпы максаты л скрипт тили менен жазылган Азаттык скрипттерин чуркап -T параметрин колдоно. MRI-cmdfile жок болсо, анда эч кандай LD -L жолдор менен көрсөтүлгөн көрсөткүчтөрдүн аны издейт.

-D

-dc

-dp

Бул үч параметрлери барабар; башка linkers менен иштөө үчүн бир нече түрлөрү колдоого алынат. Алар relocatable чыгаруу чечими (-r менен) көрсөтүлгөн болсо да, жалпы белгилер орун жүктөлсүн. жазма буйрук "FORCE_COMMON_ALLOCATION" бир таасири бар.

-E материалдар

--entry = материалдар

Колдонуу кирүүсүнөн көрө демейки кирүү чекити, Программанын аткарылышын баштап үчүн ачык-айкын билдирет. Деген жазуу эч кандай белгиси жок болсо, Азаттык кирүүгө бир катар, жана материалдар дарек катары колдонуу (саны базасынын чечмелениши болот талдоо аракет кылат 10; сиз жетектеп 0XБ Л үчүн базанын 16 колдоно алат, же 0 баруучу 8 базасынын).

-E

--export-динамикалык

ыкчам байланышкан Аткарылуучу түзүп жатканда, динамикалык белгиси столго бардык белгилери менен толукталсын. динамикалык белгиси стол Нускасы учурда динамикалык объектилерин көрүнүп турат белгилердин жыйындысы.

Эгер бул ыкмадан пайдаланууга жок болсо, динамикалык белгиси стол, адатта, шилтемени айтылган кээ бир динамикалык объектисинин тарабынан шилтемелер гана белгилерди камтыйт.

Сиз колдонгон болсо, "dlopen" программасы тарабынан аныкталат кайра белгилер билдирет керек динамикалуу нерсени жүктөй, тескерисинче, башка кээ бир динамикалык объект караганда, анда, балким, программасын өзү байланыштырып жатканда бул параметрди колдонуу керек болот.

чыгаруу формат аны колдогон болсо, ошондой эле версия скрипт белгилер динамикалык белгиси столго кошо керек көзөмөлдөө үчүн колдоно аласыз. @ Булак {VERSION} ичинде --version-арибин сүрөттөлүшүн кара.

-EB

чоң-Endian объекттерди байланыштыруу. Бул демейки чыгаруу түзүлүшү таасир этет.

-ЕЛ

Link аз-Endian объектилер. Бул демейки чыгаруу түзүлүшү таасир этет.

-f

--auxiliary аты

бир ELF бөлүштү объектисин түзүүдө, көрсөтүлгөн аты ички DT_AUXILIARY жерин калтырган. Бул жалпы объект белгиси стол жалпы объект аталыштын шарттуу белгиси столдун үстүндө көмөкчү чыпкалуу катары колдонулушу керек динамикалык Бартош айтылат.

Сиз бул чыпкасы объектисине каршы программасын -га шилтеме берген болсо, анда, сиз программаны түгөнгөндө, динамикалык Азаттык DT_AUXILIARY жерин көрөт. Динамикалык Азаттык чыпкасы объектиси ар кандай белгилерди чечет болсо, анда биринчи жалпы объект атынан аныктама бар же жок экенин текшерет. ким жок болсо, анда анын ордуна чыпкасы объектиге аныктоонун колдонулат. Жалпы объект аты жок эмес. Ошентип, жалпы объект аты, кыязы, жөндөө үчүн, же машина белгилүү аткаруу үчүн, белгилүү бир иш-милдеттерди жүзөгө ашыруунун башка ишке ашырууну камсыз кылуу үчүн гана пайдаланылышы мүмкүн.

Бул параметр бир жолудан көп эмес деп белгилесек болот. DT_AUXILIARY жазууларын алар буйрук сабында пайда болгон тартипте түзүлөт.

-F аты

--filter аты

бир ELF бөлүштү объектисин түзүүдө, көрсөтүлгөн аты ички DT_FILTER жерин калтырган. Бул жалпы объект аталыштын шарттуу белгиси үстөлдө бөлүштү түзүлүп жаткан объект чыпкалоочу катары пайдаланылышы керек белгиси стол динамикалык Бартош айтылат.

Сиз бул чыпкасы объектисине каршы программасын -га шилтеме берген болсо, анда, сиз программаны түгөнгөндө, динамикалык Азаттык DT_FILTER жерин көрөт. Динамикалык Азаттык адаттагыдай эле чыпкасы объектинин белгиси столдун ылайык белгилерди чече турган, бирок ал, чынында, жалпы объект атынан табылган аныктамаларга шилтеме берет. Ошентип, чыпкасы объект аты менен берилген белгилер тобун тандап алуу үчүн колдонулушу мүмкүн.

Кээ бир кары бир linkers да киргизүү жана чыгаруу объект билэлэри объект-билэ түзүлүшү көрсөтүү үчүн түзүүнүн toolchain боюнча -F жолду колдонгон. GNU Азаттык бул үчүн башка механизмдерин колдонот: -Б, --format, --oformat параметрлери, Азаттык жазууларында "TARGET" команда, жана "GNUTARGET" курчап турган чөйрөнү өзгөрмөлүү. GNU Азаттык бир ELF бөлүштү объектисин түзүүдө эмес, -F параметрин бурбайт.

-fini аты

бир ELF Аткарылуучу же бөлүшүлгөн объектисин түзүүдө, аткарылуучу же жалпы объект милдетинин дарегине DT_FINI орнотуу менен, малдай кийин NAME деп аташат. Алыдын ала, Азаттык чакыруу милдети катары "_fini" колдонот.

-G

Эске алынбаган. башка куралдар менен иштөө үчүн каралган.

-G балл

--gpsize = балл

Объектилерин максималдуу өлчөмү өлчөмүнө GP реестрин аркылуу оптималдаштыруу коюу. Бул ар кандай бөлүктөргө ири жана чакан объектилерин коюу колдойт мындай MIPS ECOFF катары объект билэ түрдө гана болушу мүмкүн. Бул башка объект билэ түрдө этибарга алынбайт.

-h аты

-soname = аты

бир ELF бөлүштү объектисин түзүүдө, көрсөтүлгөн аты ички DT_SONAME жерин калтырган. бир аткарылуучу бир DT_SONAME талааны жалпы объект менен байланышкан болсо, анда аткарылуучу динамикалык Азаттык Азаттык берилген DT_SONAME жаатындагы билэ атын колдонуп эмес, белгиленген жалпы объект жүктөөгө аракет кылат чуркап кийин.

-i

Бир кошумча шилтемени (параметр -r сыяктуу эле) жүзөгө ашырат.

-init аты

бир ELF Аткарылуучу же бөлүшүлгөн объектисин түзүүдө, аткарылуучу же жалпы объект милдетинин дарегине DT_INIT орнотуу менен, жүктөгөндө кайсы NAME деп аташат. Алыдын ала, Азаттык чакыруу милдети катары "_init" колдонот.

-l Archive

--library = Музыка

Кошуу Archive билэ байланыштыруу сүрөттөрдүн тизмесине сайт. Бул параметр убакта болбосун колдонулушу мүмкүн. LD көрсөтүлгөн ар сактоо үчүн "libarchive.a" боюнча окуяларга, анын жол-тизмесин издөө болот.

Бөлүштү китепканаларды колдоо системалары жөнүндө, LD да "сөздөр" башка бутактары менен китепканалардын издөө мүмкүн. Тактап айтканда, ELF жана SunOS системалары боюнча, LD "сөздөр" узартуу менен бири издеп алдында ".Ал:" узартуу менен китепкана үчүн каталогду издөө болот. жыйынында, а ".Ал" узартуу жалпы китепкананы көрсөтүп турат.

Азаттык бул буйрук сабында көрсөтүлгөн жерде, бир гана жолу бир сайт издөө болот. Archive буйрук сабында чыкпаган алдына бир объект Ширина бир белгиси аныктайт, анда Азаттык чыкпаган тиешелүү (лар) кирет. Бирок, командалык саптан кийин пайда объектиге бир белгисиз белгиси кайрадан Archive издөө Бартош алып келбейт.

(Archives бир нече жолу издөө Бартош мажбурлоо жолун тандоо - кара.

Сиз буйрук сабында эле Archive бир нече жолу Тизмеге мүмкүн.

Музыка издөө бул түрү Unix linkers үчүн типтүү болуп саналат. Бирок, сиз LD onAIX колдонуп жаткан болсо, анда ал АИС Азаттык жүрүм башкача экенин белгилешет.

-L searchdir

--library-жол = searchdir

LD Archive китепканаларга жана ууга контролдоо жазууларында издеп турган жолдордун тизмесине жол searchdir кошуу. Сиз бул параметрди кээде кандайдыр бир катар пайдалана алат. каталогдор, алар буйрук сабында көрсөтүлгөн болгон үчүн издеп жатышат. буйрук сабында көрсөтүлгөн Directories демейки каталогдорго чейин издеп жатышат. Бардык -L параметрлери карабастан параметрлери пайда болгон тартип, бардык -l жолдор колдонулат.

Searchdir "=" деген сөз менен башталат, анда "=" Азаттык sysroot Ƶ Сыпаттоо менен көрсөтүлгөн жол учурда алмаштырылат өзгөрүүлөр болуп жатат.

Жолдордун демейки топтому (-l менен көрсөтүлгөн туруп) колдонуп жаткан Emulation режими л көз каранды издеп, ошондой эле ал өзгөрүүлөр кандай боюнча кээ бир учурларда.

жолу да "SEARCH_DIR" буйругу менен шилтеме ариби менен аныкталышы мүмкүн. ушундай жол менен көрсөтүлгөн Directories Азаттык жазма буйрук сабында пайда болгон учурда издеп жатышат.

Emulation

Emulation Бартош үлгү. Сиз менен жеткиликтүү emulations Тизмеге болот --verbose же -V жолдор.

параметр пайдаланылбай турса, ал аныкталса, анда Emulation, "LDEMULATION" айлана-чөйрөнү өзгөрмөлүү алынат.

Болбосо, демейки Emulation Азаттык өзгөрүүлөр кандайча көз каранды.

--print-карта

стандарттык өндүрүшүнүн шилтеме картасын чыгаруу. Байланыш карта төмөнкүлөрдү кошо алганда, шилтеме, маалымат менен камсыз кылат:

*

обжек жана белгилер эс бөлүштүрүлүп, кайда.

*

Кандай жалпы шарттуу бөлүнөт.

*

алып келүүнү Archive мүчөсү келтирилген белгилердин бир сөз менен баары Archive мүчөлөрү, шилтемени киргизилген.

--nmagic

бөлүмдөрдүн бет трассаны өчүрүп, ал эми мүмкүн болсо, "NMAGIC" деп өндүрүүнү белгилегиле.

-N

--omagic

окула турган жана жазылбайт болууга текст жана маалымат бөлүмдөрүн кой. Ошондой эле, маалымат сегментти бет-тегиздөө эмес, жана жалпы китепканалар менен байланыштырып өчүрүү. чыгаруу формат Unix стили сыйкырдуу сандарды колдогон болсо, "OMAGIC" деп өндүрүүнү белгилегиле.

--no-omagic

Бул параметр -N тандоосу таасиринен көпчүлүгү жараксыз. Ал гана окуй турган текст бөлүмүн коёт, ал эми бет түздөлгөн болууга маалымат сегментти мажбурлайт. Эскертүү - бул параметр бөлүштү китепканалар менен байланыштырып мүмкүндүк бербейт. Бул үчүн -Bdynamic колдон.

епо чыгаруу

--output = чыгаруу

LD тарабынан даярдалган программага аты өндүрүүнү колдонуу; бул параметр жок болсо, аты-жөнү a.out демейки боюнча колдонулат. жазма буйрук "OUTPUT" да чыгаруу билэ атын көрсөтүүгө болот.

-O деңгээл

Деңгээл турган болсо, Сандык баалуулуктарды жогору нөл ууга чыгарылышты жакшыртууну киргизсе болот. Бул бир кыйла узун, ошондуктан, балким, бир гана акыркы бинардык үчүн иштетилиши керек болушу мүмкүн.

-q

--emit-relocs

толугу менен байланышкан exececutables менен көчүрүү бөлүктөрдү жана мазмунун калтыруу. Post шилтеме талдоо жана оптималдаштыруу аспаптар Executables туура өзгөртүүлөрдү жүргүзүү үчүн, бул маалыматтарды керек болушу мүмкүн. Бул ири Executables келет.

Бул параметр учурда гана ELF аянтчалардын колдоого алынат.

-r

--relocateable

Башкача айтканда, --- топтоо relocatable чыгарылышты, өз кезегинде, LD менен киргизүү болуп кызмат кыла албайт чыгаруучу билэни пайда. Бул көп учурда жарым-жартылай шилтемени деп аталат. зыяндуу таасиринен улам, стандарттык Unix сыйкырдуу сандарды колдоо чөйрөлөрдө, бул параметр да чыгаруусу сыйкырчылар номерин "OMAGIC" орнотот. бул параметр көрсөтүлгөн эмес болсо, абсолюттук билэ өндүрүлгөн. C ++ программаларды байланыштырып, бул параметр курулушчулар шилтеме чече албайт; Ошол үчүн, -Ur колдонушат.

киргизүү билэ чыгаруу делосуна эле түзүлүшү ээ эмес, ал киргизүү билэ бир жерде турбаган, камтылган эмес болсо, жарым-жартылай шилтемени гана колдоого алынат. Ар чыгаруу түрүндөгү кошумча чектөөлөр болушу мүмкүн; Мисалы, кээ бир "a.out" негизделген түрү ар башка түрдө киргизүү документтеринде менен жарым-жартылай байланыштырууну колдоого алынбайт.

Бул параметр -i бир эле нерсени кылат.

-R аты

--just-белгилер = аты

Белгиси аттарды жана аты алардын даректерин окуп, бирок аны же өндүрүшүнүн аны камтыйт Көчүүгө жок. Бул сиздин чыгаруу билэ башка программалар менен аныкталат эс абсолюттук жерге каймана мааниде сөз берет. Бир караганда, бул параметр көбүрөөк колдонушу мүмкүн.

Башка ELF linkers менен иштөө үчүн, -R тандоо эмес, билэ атын, каталог аты менен болсо, анда ал -rpath тандоосу катары каралган.

-s

--strip баары

чыгаруусу бардык белгиси маалымат кездешпейт.

-S

--strip-такта

чыгаруу Билэ мүчүлүштүктөрдү белгиси маалыматты (бирок бардык белгилер эмес) кездешпейт.

-t

--trace

LD аларды иштетип катары киргизүү делолорун аттарын Басып чыгаруу.

-T scriptfile

--script = scriptfile

Азаттык скрипт катары scriptfile колдонгула. Бул скрипт LD деген демейки Азаттык скрипт ордуна (балким, ага кошуп караганда), ошондуктан commandfile чыгуу билэни сүрөттөө үчүн зарыл болгон нерселердин баарын көрсөтүлүүгө тийиш. Scriptfile учурдагы каталогдо жок болсо, "LD", кандайдыр бир мурунку -L жолдор менен көрсөтүлгөн көрсөткүчтөрдүн аны издейт. Бир нече -T параметрлери чогулат.

-u белгиси

--undefined = белгиси

Force белгиси чөйрөсүнө белги катары чыгаруучу делосуна киргизилет керек. Бул, мисалы, стандарттуу китепканаларга кошумча модулдарын байлоо себеп болушу мүмкүн жасоо. -u кошумча белгисиз белгилерди киргизүү үчүн ар кандай мүмкүнчүлүк далилдер менен кайталап калышы мүмкүн. Бул параметр "тышкы" Азаттык жазма буйругу менен барабар.

-Ur

C ++ программаларды башка эч нерсе үчүн бул параметр -r барабар: ал relocatable чыгарылышты ---, башкача айтканда, өз кезегинде, LD менен киргизүү болуп кызмат кыла албайт чыгаруучу билэни жаратат. C ++ программаларды бириктире кийин, -Ur -r айырмаланып, курулушчулар шилтеме чечүү турат. Бул өздөрү -Ur менен тыгыз байланышта болгон материалдар боюнча -Ur колдонуу үчүн иш эмес; конструктор стол курулган болсо, ал үчүн кошуу мүмкүн эмес. Акыркы гана жарым-жартылай шилтемени -Ur колдонуу жана башкалар үчүн -r.

--unique [=-бөлүк]

Ар бир киргизүү бөлүмүн салыштыруу бөлүк өзүнчө чыгаруу бөлүмүн жараткан, же кошумча базалык БӨЛҮМ талаш жок болсо, анда ар бир жетим киргизүү өтүү үчүн. Жетим бөлүм Азаттык ариби менен айтылган эмес, бири болуп саналат. Сиз бул параметрди командалык саптан бир нече жолу пайдаланса болот; Бул Азаттык ариби менен чыгаруучу бөлүм тапшырмаларды аныктоо эле аты менен киргизүү бөлүмдөрдүн нормалдуу биригишин, тоскоол болот.

-v

--version

-V

LD үчүн версия номерин көрсөтүү. -V параметр да колдоого emulations тизмеси.

-x

--discard баары

жергиликтүү белгилерди жок кылуу.

-X

--discard-жергиликтүү

бардык убактылуу жергиликтүү белгилерди жок кылуу. Көпчүлүк максаттары үчүн, бул алардын ысымдары L менен башталат жергиликтүү белгилер болуп саналат.

-y белгиси

--trace-белгиси = белгиси

Белгиси пайда болгон ар бир байланыштуу билэ атын чыгаруу. Бул параметр убакта болбосун берилиши мүмкүн. көп системалар боюнча ал түшүндүрүп prepend зарыл.

Бул параметр сиз пайдалуу сиздин шилтеме бир белгисиз белгиси бар, ал эми маалымдама келе кайда экенин билбейм.

-Y жол

Демейки китепкана издөө жолуна жолун кошуу. Бул параметр Solaris иштөө үчүн бар.

-z ачкыч

таанылган ачкыч "initfirst", "арачы", "loadfltr" болуп, "nodefaultlib", "nodelete", "nodlopen", "nodump", "азыр", "теги", "combreloc", "nocombreloc" жана "nocopyreloc ". башка ачкыч Solaris иштөө үчүн этибарга алынбайт. объектисин белгилейт "initfirst" биринчи башка объектилерин алдында иштөө учурунда ишке керек. "Арачы" анын белгиси стол бардык белгилер, бирок негизги Аткарылуучу алдында interposes ошол максатка белгилейт. "Loadfltr" анын filtees иштөө учурунда тез арада кайра иштетилүүгө ошол максатка белгилейт. "Nodefaultlib" ушул объектисин көз карандылыкты издөө бурбай турган объектини белгилейт ар кандай демейки китепкана издөө жолдору. "Nodelete" объектиси Runtime боюнча түшүрүлүшү керек эмеспи белгилейт. "Nodlopen" "dlopen" жеткиликтүү эмес нерсени белгилейт. "Nodump" объектиси "dldump" бүлөө мүмкүн эмес экендигин белгилейт. "Эми" эмес, жалкоо узактыгы камалышы менен объектини белгилейт. "Келип чыгышы" объектиси $ НЕГИЗДӨӨЧҮСҮ камтышы мүмкүн экендигин белгилейт. "Defs" белгисиз белгилери уруксат. "Muldefs" бир нече аныктамаларды берет. "Combreloc" белгиси издөө кештөө динамикалык алышы үчүн, аларды бир нече reloc бөлүктөрдү жана иреттеп жатат айкалыштырат.

"Nocombreloc" бириктирип, бир нече reloc бөлүктөрдү өчүрөт. "Nocopyreloc" көчүрмөсү relocs өндүрүүнү өчүрөт.

- (архив -)

--start-топ архив --end-топ

Archives тизмеси болушу керек Archive документтеринде . Алар ачык билэ атын, же -l ыкмаларды болушу мүмкүн.

көрсөтүлгөн архив эч кандай жаңы белгисиз шилтеме түзүлгөн чейин бир нече жолу болуп эсептелинет. Адатта, бир Archive ал буйрук сабында көрсөтүлгөн үчүн бир жолу гана издеп турат. Ошол чыкпаган белгиси командалык саптан кийин пайда болчу бир чыкпаган объектиси тарабынан эскертилген кандайдыр бир белгисиз белгисин чечүү үчүн керек болсо, Азаттык деп шилтеме чече алмак эмес. мурдараак бириктирүүчү, алар бардык мүмкүн болгон бардык шилтемелер чечилгенге чейин бир нече жолу издөө.

Бул параметр колдонуу олуттуу аткаруу баасы бар. Ал эки же андан көп Маданият жана маалымат министрлигинин ортосундагы сөзсүз тегерек шилтемелер бар болгондо гана колдонуу туура болот.

--accept-белгисиз-киргизүү-арка

--no-кабыл алуу-белгисиз-киргизүү-арканы

анын архитектурасы деп таанылышы мүмкүн эмес киргизүү материалдары кабыл Бартош айтылат. божомол колдонуучу алар эмне кылып жатканын билип туруп, бул белгисиз киргизүү документтеринде кошкусу келет билет. жарыялаганга чейин бул, Бартош демейки жүрүм-туруму болду 2.14. Бошотуу 2.14 чейин демейки жүрүм-жылдан бери мындай киргизүү материалдары четке болуп саналат, ошондуктан --accept-белгисиз-киргизүү-арка тандоонун эски жүрүм-калыбына келтирүү үчүн кошулду.

-assert ачкыч

Бул параметр этибарга алынбайт SunOS шайкеш .

-Bdynamic

-dy

-call_shared

динамикалык китепканалар каршы Link. Бул үчүн аянтчалардын гана мааниге ээ китепканалар бөлүштү колдоого алынат. Бул параметр, адатта, мындай аянтчалардын демейки болуп саналат. Бул тандоонун мира ар түрдүү системалар менен бирге иштөө үчүн келет. Сиз командалык саптан бул параметрди бир нече жолу пайдаланса болот: аны ээрчип -l тандоолордун китепкана Издөө таасир этет.

-Bgroup

динамикалык бөлүмдө "DT_FLAGS_1" кириши менен "DF_1_GROUP" желегин орнотуу. Бул объект жана анын көз карандылыкты менен Lookups чечүү үчүн узактыгы Азаттык гана топтун ичинде жүзөгө ашырылат себеп болот. маанини туюнтат --no-Ширина. Бул параметр колдоо ELF аянтчалардын гана мааниге ээ бөлүштү китепканаларын .

-Bstatic

ис

-non_shared

-static

бөлүштү китепканалардын каршы -га шилтеме берген жок. Бул китепканалар колдоого бөлүштү турган аянтчалардын гана мааниге ээ болуп саналат. Бул тандоонун мира ар түрдүү системалар менен бирге иштөө үчүн келет. Сиз командалык саптан бул параметрди бир нече жолу пайдаланса болот: аны ээрчип -l тандоолордун китепкана Издөө таасир этет.

-Bsymbolic

жалпы китепканасын түзүп жатканда, эгер бар болсо, чогуу китепкананын ичиндеги аныктамасына дүйнөлүк белгилер шилтеме милдеттүү. Адатта, ал жалпы китепкананын ичиндеги аныктамасын жокко жалпы китепкана менен байланышы бар программа боюнча мүмкүн. Бул параметр бөлүштү китепканаларды колдоо ELFplatforms боюнча гана болушу мүмкүн.

--check-бөлүмдөр

--no-бөлүктөрдү текшерип,

Алар кандайдыр бир кайталоону жок болсо көрө дайындалган кийин бөлүм дарегин текшерүү үчүн эмес, Бартош сурайт. Адатта Азаттык Бул текшерсин, ошондо ал кандай гана болбосун бул тема ката билдирүүлөрдү берет дал көрсө. Азаттык тууралуу билет, жана сырткы катмарын жаткыруу боюнча участкаларына эске таасир этет. Демейки буйрук сап которуу --check-бөлүмдөрү аркылуу калыбына келтирилиши мүмкүн.

--cref

Output айкаш шилтеме стол. бир Азаттык карта делосу жатса, кайчылаш маалымдама стол карта делосуна басылып жатат. Болбосо, бул стандарт өндүрүшүнүн басылып жатат.

Эгер зарыл болсо, жонокой бир ариби тарабынан иштелип чыгышы мүмкүн, ошондуктан столдун формат, атайын жөнөкөй. аты менен сорттой белгилер, басылып жатат. Ар бир белги үчүн, билэ ысымдар тизмеси берилет. белгиси аныкталган болсо, биринчиси билэ аныктоо жайгашкан жери болуп саналат. Калган өздүк белгиси шилтеме бар.

--no-аныктоо-жалпы

Бул параметр жалпы белгилер Кайрылуулар тапшырмасын жайлатат. жазма буйрук "INHIBIT_COMMON_ALLOCATION" бир таасири бар.

--no-аныктоо-жалпы чечим чыгаруу билэ түрүн тандоого Common белгилер Даректерди жүктөлсүн чечим аралык ажырым берет; Эгерде бир эмес Relocatable чыгаруу түрү күчтөр жалпы белгилер менен дарегин берүү. --no-жалпы-аныктоо колдонуу жалпы китепкана гана негизги программасына даректерди берилиши чейин шилтемелер Common белгилер берет. Бул жалпы китепканага пайдаланылбаган дубликат орун жок, ошондой эле узактыгы белгиси чечүү үчүн атайын издөө жолдору көп динамикалык модулдар бар болгондо туура эмес нускада үчүн чечүүнүн үстүнөн ар кандай мүмкүн болгон аралашып бербейт.

--defsym белгиси = сөз айкашы

Сөз менен берилген абсолюттук дарегин камтыган чыгаруу кезекте дүйнөлүк белгисин түзүү. буйрук сабында-жылы бир нече белгилерди аныктоо үчүн зарыл болгон канча жолу катары Сиз бул параметрди пайдалана алат. Кошууну чектелүү түрү бул жерде сөз үчүн гана колдоого алынат: бир алтылык туруктуулукту же иштеп жаткан нерсенин атын, же пайдалануу "+" жана бериши мүмкүн ", -" деген сөз менен толукталсын, же он алтылык туруктуулар же белгилерди албагыла. Сиз дагы татаал сөздөрдү керек болсо, бир жазуудан Азаттык буйрук тилин колдонуп көрөлү. Эскертүү: белгиси ортосунда эч кандай ак мейкиндик болушу керек, Барабар ( `` = '') кол коет, ал сөз айкашы.

--demangle [= стили]

--no-demangle

Бул параметрлер ката билдирүүлөрдү жана башка өндүрүшүнүн белгиси аттарын demangle же контролдоо. Азаттык demangle деп айтылганда, ал окула турган ыкмада белгиси ысымдарын берүүгө аракет кылат: Алар объект билэ түрдө колдонулат, анда ал алып баса бекер, жана колдонуучу окулуучу аталыштар C ++ ыксыз белгиси аттарын айлантат. Ар түзүүчүлөрдөн ар калтыратып жатып карашат. кошумча demangling стили аргумент сиздин Түзүүчүнүн үчүн тиешелүү demangling стилди тандап үчүн колдонсо болот. Чөйрө өзгөрүлмө COLLECT_NO_DEMANGLE белгиленет, эгерде Азаттык демейки боюнча demangle болот. Бул параметрлер демейки нерсени жоюп үчүн гана пайдаланылышы мүмкүн.

--dynamic-Азаттык билэ

динамикалык Азаттык атын коюу. динамикалуу ELF Executables байланышы иштеп жатканда гана мааниге ээ болуп саналат. демейки динамикалык Азаттык адатта туура болуп саналат; Сен эмне кылып жатканын билбей туруп, мындай болбошу керек.

--embedded-relocs

GNU түзүүчүгө жана Assembler үчүн -membedded-арт тандоосу тарабынан MIPS PIC коду камтылган, байланыштыруучу Бул параметр гана болушу мүмкүн. Бул статистикалык көрсөткүчү баалуулуктарга демилгеленди бардык берилиштерди Көчүүгө Runtime боюнча пайдаланылышы мүмкүн үстөл түзүү Бартош себеп болот. чоо-жайын билүү үчүн testsuite / ЛК-empic кодду карагыла.

--fatal-эскертүү

Бардык эскертүүлөргө мамиле каталар .

--force-EXE-SUFFIX

чыгаруучу билэ .exe SUFFIX ээ болушун камсыз кылы¾ыз.

Бир ийгиликтүү куруп толугу менен тыгыз байланышта иштеп чыгуу билэ ". Жок болсо EXE " же " .dll " Suffix, бул тандоо ".exe" ысмындагы менен аты уйкаш бирине чыгуу билэни көчүрүү үчүн Бартош мажбурлайт. Бул параметр алгылыктуу пайдаланууда пайдалуу Unix makefiles кээ бир котормолорунда болгондуктан, Microsoft Windows аскер боюнча Windows ал ".exe" ысмындагы аяктады каралбаса, сүрөттү иштебейт.

--no-GC-бөлүмдөр

--gc-бөлүмдөр

пайдаланылбаган киргизүү бөлүмдөрдүн таштандыларды топтоо аракетин иштетүү. Бул параметр колдоого албайбыз бутага эске алынбайт. Бул параметр -r шайкеш эмес, ал динамикалуу интернет сайттардын мазмуну менен колдонуу керек. Демейки жүрүм-турум (бул аткарып эмес, таштандыларды чогулта алган ) буйрук сабында --no-GC-бөлүктөрдү көрсөтүү менен калыбына келтирип алса болот.

--help

стандарттык өндүрүү жана чыгуу жөнүндө буйрук сап жолдору кыскача Басып чыгаруу.

--target-жардам

стандарттык өндүрүү жана чыгуу боюнча максаттуу конкреттүү жолдору кыскача Басып чыгаруу.

-Map mapfile

Билэ mapfile шилтеме картасын чыгаруу. Жогоруда, тандоосу сүрөттөлүшүн кара.

--no-ичип-эс

LD адатта ашуун ылдамдык боюнча ылайыкташтырат эс эс киргизүү материалдарын белгиси үстөлдөрүн, шумдук менен пайдалануу. Бул параметр ордуна зарыл деп белгиси үстөлдөрүн окуп, эс пайдалануу оптималдаштыруу LD айтылат. Бул чоң Аткарылуучу байланыштыруу, ал эми ууга эс космоско чыгып, кетип калса, талап кылынышы мүмкүн.

--no-белгисиз

-z defs

эмес каймана Бөлүшүлгөн китепкана түзүлүп жатканда, адатта, белгисиз белгилер жол жана узактыгы чаптоочу менен чечилүүчү калган. Бул параметрлер, мисалы, белгисиз белгилери уруксат.

--allow-бир нече сапаттуу

-z muldefs

белгиси бир нече жолу аныкталат, адатта, ал Азаттык каргашалуу ката отчет берет. Бул параметрлер бир нече аныктамалары жол жана биринчи определение колдонулат.

--allow-shlib-белгисиз

--no-белгисиз коюлса да бөлүштү объектилерде белгисиз белгилерди уруксат берүү. жыйынтыгы дайыма объектилерде белгисиз белгилер дагы ката чыгат болот, ал эми жалпы объектилерде белгисиз белгилер этибарга алынбайт. no_undefined ишке ашыруу узактыгы Азаттык белгисиз белгилер боюнча басылып калат деп болжолдоого болот. Бирок ядро ​​учурдагы архитектура үчүн милдети абдан ылайыктуу болгон тандоо үчүн жүк учурда аларды тактардын бери кадимки бар, жок дегенде, бир система (BeOS'ко окшош) бөлүштү китепканаларда белгисиз белгилер болуп саналат. IE динамикалуу тиешелүү memset милдетти тандоо. Сыягы, ал HPPA белгисиз белгилери бар китепканаларын бөлүштү да табигый нерсе.

--no-Ширина-версия

белгиси чөйрөсүнө нускасы бар, адатта, ал Азаттык бурбай калат. Бул параметр белгисиз нускасы жана өлүмгө ката менен белгилери уруксат ордуна берилет.

--no-эскертүү-келбөө

Адатта Л, алар ар кандай иштетүүчүлөр үчүн же ар кандай endiannesses үчүн түзүлгөн болуп, балким, кандайдыр бир себептерден улам келбестиги бар киргизүү документ бири-бири менен байланыштырууга аракет, эгерде ката берет. Бул параметр, ал унчукпай эле андай мүмкүн болуучу катачылыктардан уруксат керек LD айтылат. Бул параметр сиз Азаттык каталар орунсуз экенин камсыз кээ бир атайын иш-аракеттерди алган учурларда гана, этияттык менен колдонуу керек.

--no-жан-Archive

Кийинки Archive билэлэри --whole-Archive тандоосу таасирин өчүрүү.

--noinhibit-Шмидт

ал дагы эле жарактуу болсо Аткаруучу чыгаруу билэни сактап калат. Адатта, бул шилтеме учурунда каталарды туш болсо Азаттык чыгаруучу билэни чыгара албайт, бул кандайдыр бир ката чыгарат, ал өндүрүштүн билэни жазып эле айтылат.

-nostdlib

Гана ачык буйрук сабында көрсөтүлгөн китепкана бөлүмүн ачуу каталогдорду издөө. Азаттык жазууларында көрсөтүлгөн Китепкана каталогдор (буйрук сабында көрсөтүлгөн Азаттык жазууларында кошо алганда) эске алынбайт.

--oformat чыгаруу-формат

LD объект Билэ бир эмес, бир нече түрүн колдоого өзгөрүүлөр болушу мүмкүн. Сиздин LD бул жол өзгөрүүлөр болсо, чыгуу объект для бинардык түзүлүшү тактоо --oformat параметрин колдоно аласыз. LD альтернатива объект түрлөрүн колдоо үчүн багытталган күндө да, сиз LD демейки чыгаруу түрдө ар бир машинанын көпчүлүк кадимки түзүлүшү өндүрүү өзгөрүүлөр болушу керек деп, адатта, бул көрсөтүү керек. чыгаруу-формат Текст сап, BFD китепканалар тарабынан колдоого алынган бир түрдө аталышы. (Сиз objdump -i менен жеткиликтүү экилик тизмеси алат.) Жазма буйрук "OUTPUT_FORMAT" да чыгаруу түзүлүшү көрсөтүүгө болот, бирок, бул параметр, аны жокко чыгарат.

-qmagic

Бул параметр Linux шайкеш этибарга алынбайт.

-Qy

Бул параметр SVR4 шайкеш этибарга алынбайт.

--relax

машина көз каранды менен мүмкүн. Бул параметр бир нече максаттуу колдоого алынат.

Кээ бир аянтчалар жөнүндө, --relax Же дареги режимдер эс жана чыгаруу объект ишинде жаңы көрсөтмөлөрдү синтездеп катары Азаттык программасына кайрылып чечсе глобалдык кубатын мүмкүн болуп, жүзөгө ашырат.

Кээ бир аянтчалардын бул шилтеме глобалдуу оптималдашуулары каймана мүмкүн мүчүлүштүктөрдү натыйжасында Аткарылуучу мүмкүн эмес. Бул кайра иштетүүчүлөрдүн Matsushita MN10200and MN10300 үй-иши экени белгилүү.

Бул колдоого алынбайт аянтчалар жөнүндө, кабыл алынган --relax, бирок четке каккан.

--retain-белгилер-билэ аты

Башкаларды түшүргөндө, бир гана билэ аты көрсөтүлгөн белгилерди сактап калат. сапка бир белгиси аты менен аты, жөн гана жалпак сөп. Бул параметр ири дүйнөлүк белгиси стол Нускасы убакыт эс сактоо, акырындык менен топтолуп жатат шарттарда (мисалы, VxWorks ас) өзгөчө пайдалуу.

--retain-белгилер-билэ белгисиз белгилерди, же көчүрүү үчүн зарыл болгон белгилерди жокко чыгаруу эмес.

Сиз буйрук сабында бир жолу гана --retain-белгилер-сааты көрсөтүлүшү мүмкүн. Бул сатылышы жана сатылышы жокко чыгарат.

-rpath реж

узактыгы китепкана издөө жолуна үчүн каталогду кошуу. Бул жалпы объекттер менен ELFexecutable байланыштырып колдонулат. Бардык -rpath аргументтер көпчүлүк жана иштөө учурунда жалпы объекттерди жайгаштыруу, аларды колдонуп узактыгы Азаттык чейин кабыл алынат. -rpath параметр да ачык шилтеме камтылган жалпы объекттер үчүн зарыл болгон жалпы объекттерин жайгаштыруу колдонулат; -rpath байлоо тандоосу сүрөттөлүшүн кара. -rpath бир ELF Аткарылуучу байлоо колдонулган жок болсо, ал аныкталган болсо, айлана-чөйрөнүн өзгөрүлмө "LD_RUN_PATH" мазмуну колдонулат.

-rpath тандоо да SunOS боюнча пайдаланылышы мүмкүн. Алыдын ала, SunOS боюнча Азаттык ал берилген бардык -L тандоолордун ичинен узактыгы издөө жамаачы түзөт. Бир -rpath параметр колдонулган болсо, узактыгы издөө жол -L ыкмаларды эске албай, бир гана -rpath ыкмаларды пайдалануу менен түзүлөт. OnNFS filesystems орнотулган болушу мүмкүн көптөгөн -L ыкмаларды кошумчалайт ДжСС колдонуп Бул пайдалуу болушу мүмкүн.

Башка ELF linkers менен иштөө үчүн, -R тандоо эмес, билэ атын, каталог аты менен болсо, анда ал -rpath тандоосу катары каралган.

-rpath байлоо DIR

Elf же SunOS колдонуп жатканда, бир жалпы китепкана дагы талап кылышы мүмкүн. Бул "LD -shared" -га шилтеме берген барактар ​​киргизүү делолорун бири катары жалпы китепканадан кийин болот.

Азаттык андай эмес бөлүшүлгөн эмес relocatable шилтеме кылып жатканда көз карандылыгын жолукканда, ал ачык тиешеси жок болсо, өзүнөн талап Бөлүшүлгөн китепкана жана шилтемени ал камтыйт табууга аракет кылат. Мындай учурда, -rpath байлоо чечим издөө каталогдорго биринчи топтомун аныктайт. -rpath байлоо параметр үтүр менен бөлүнүп аттарынын тизмесин көрсөтүү менен, же бир нече жолу пайда же каталог аталыштар ырааттуулугун көрсөтүлүшү мүмкүн.

Бул параметр кыйын жалпы китепкана толтурулгандыгына мүмкүн издөө жолуна чыгарат да этияттык менен колдонуу керек. Мындай учурда ал узактыгы Азаттык кыла турган караганда кокусунан башка издөө жолду пайдаланууга мүмкүн.

Азаттык талап бөлүштү китепканаларын жайгашкан төмөнкү издөө жолду колдонот.

1.

-rpath байлоо жолдору каралган ар кандай каталогдор.

2.

-rpath жолдору каралган ар кандай каталогдор. -rpath жана -rpath-линк ортосундагы айырмачылык -rpath байлоо параметр -га шилтеме берген учурда гана күчүнө кирет, ал эми -rpath жолдор менен көрсөтүлгөн көрсөткүчтөр, Аткарылуучу киргизилген жана иштөө учурунда колдонулат, башкача айтканда. Ал эне Азаттык гана болуп саналат.

3.

Бир ELF системасы жөнүндө, -rpath жана "RPATH-" -га шилтеме берген ыкмаларды колдонгон жок болсо, айлана-чөйрөнүн өзгөрмөнүн "LD_RUN_PATH" мазмунун издөө. Ал эне Азаттык гана болуп саналат.

4.

On SunOS, -rpath түрүн жок болсо, -L ыкмаларды пайдалануу менен, көрсөтүлгөн эч каталог издөө.

5.

эне Бартош үчүн, айлана-чөйрөнүн өзгөрүлмө "LD_LIBRARY_PATH" мазмуну.

6.

эне ELF Бартош үчүн, жалпы китепкана "DT_RUNPATH" же "DT_RPATH" менен каталогдор, аны менен зарыл болгон жалпы китепканалар издеп жатышат. "DT_RPATH" жазууларда "DT_RUNPATH" жазуулар бар болсо эске алынбайт.

7.

Демейки каталогдор, адатта / LIB жана / окудум / LIB.

8.

Бир ELF системасында эне Бартош үчүн, билэ /etc/ld.so.conf бар болсо, көрсөткүчтөрдүн тизмеси делосуна табылган.

талап кылынган жалпы китепкана табылган жок болсо, анда Азаттык эскертүү берүү жана шилтемеси менен мындан ары да улантыла берет.

-shared

-Bshareable

Жалпы китепкананы түзүү. Бул учурда бир гана ELF, XCOFF жана SunOS аянттарды колдоого алынат. On SunOS, Азаттык -e тандоо колдонулат жана шилтеме менен белгисиз белгилер бар эмес болсо, жазуусу жалпы китепкана түзүүгө болот.

--sort-жалпы

Бул параметр орундуу чыгаруу бөлүмдөрүндө аларды сала бергенде өлчөмү боюнча жалпы белгилерди сорттой LD айтылат. Биринчи кезекте бир байт белгилери, анда эки Байт, анда бардык төрт Байт, андан кийин дагы бир нерсени келет. Бул трасса чектөөлөрдөн улам белгилер ортосундагы ажырымды алдын алуу болуп саналат.

--split-менен-билэ [көлөм]

Окшош --split-менен-reloc, бирок көлөмү жеткенден кийин ар бир киргизүү делосуна үчүн жаңы чыгаруу бөлүмүн түзөт. 1 бир өлчөмүнө көлөмү демейки берген жок болсо.

--split-менен-reloc [саны]

Делосуна саны көчүрүү көп камтыган эч бир чыгаруучу бөлүм ушунчалык чыгаруу ишинде кошумча бөлүктөрдү пайда кылат. COFF объект билэ үлгүдөгү менен белгилүү бир реалдуу убакыт данынын эске жүктөп зор relocatable материалдары иштеп чыгууда бул пайдалуу эмес; бери COFFcannot бир бөлүмдө жыйынтыктары 65535 көчүрүү билдирет. Бул негизсиз бөлүмдөрүн колдоо эмес, объект билэ түрдө менен иштөө үчүн сөзсүз болот деп белгилешет. Азаттык бөлүштүрүү үчүн жеке киргизүү участкаларын бөлүү эмес, эгер бир киргизүү бөлүмүн саны көчүрүү көп бар, ошондуктан бир чыгаруучу бөлүм көп көчүрүүгө болот. 32768-жылдын мааниге демейки саны.

--stats

Азаттык Compute жана иши жөнүндө дисплей статистикасы сыяктуу аткаруу убакыт жана эстутум колдонулушу сыяктуу.

--traditional-формат

Кээ бир максаттары үчүн, LD көлөмү бир учурдагы Азаттык чыгаруу кээ бир жолдор менен айырмаланып турат. Бул которуу ордуна салттуу түзүлүшү пайдаланууга LD сурайт.

Мисалы, SunOS боюнча, LD белгиси сап столго кайталанма жазмалар айкалыштырат. Бул ичинде 30 пайызга толук мүчүлүштүктөрдү маалымат менен чыгаруусу өлчөмүн азайтышы мүмкүн. Тилекке каршы, SunOS "dbx" программасы натыйжасында программасын окуп мүмкүн эмес ( "GDB" эч кандай оорусу бар). --traditional-формат которуу кайталанма жазмалар айкалыштыруу эмес, LD айтат.

--section-баштоо sectionname = дө

Бир бөлүмүн жайгаштыруу чыгаруусу дө тарабынан берилген абсолюттук дареги боюнча. Сиз ошондой эле зарыл болгон көп жолу буйрук сабында-жылы бир нече бөлүмдөрдү жайгаштыруу үчүн бул параметрди пайдалана алат. дө бир алтылык бүтүн болушу керек; башка linkers менен иштөө үчүн, адатта он алтылык көрсөткүч менен байланышкан жетектөөчү 0XБ Л кездешпейт мүмкүн. Эскертүү: sectionname ортосунда эч кандай ак мейкиндик болушу керек, Барабар кол ( `` = '') жана ж.

-Tbss дө

-Tdata дө

-Ttext дө

Баштап дареги боюнча Жамаат Ж¤БО колдонуу --- --- тиешелүүлүгүнө жараша "СГС", "маалыматтар", же чыгаруу берилген "текст" сегментинде. дө бир алтылык бүтүн болушу керек; башка linkers менен иштөө үчүн, адатта он алтылык көрсөткүч менен байланышкан жетектөөчү 0XБ Л кездешпейт мүмкүн.

--dll-дайын

--verbose

LD үчүн версия номерин көрсөтүү менен колдоого Азаттык emulations Тизмеге. киргизүү жана эсеп ачуу мүмкүн эмес болот Display. Азаттык скрипт Азаттык колдонгон көрсөтүү.

--version-скрипт = версия-scriptfile

Азаттык үчүн версия арибин аталышын көрсөтүү керек. Адатта, бул жалпы китепканаларын түзүүгө жаратылган китепкана бөлүмүн ачуу үчүн версия микро тууралуу кошумча маалыматты көрсөтүү үчүн колдонулат. Бул параметр бөлүштү китепканаларды колдоо ELF аянтчалардын боюнча гана болушу мүмкүн.

--warn-жалпы

жалпы белгиси дагы бир белгиси менен же белгиси аныктама менен бирге болгондо эскертүү. Unix linkers бул бир эле шалбыраган тажрыйбаны берет, бирок кээ бир башка иштеп жаткан системасы боюнча linkers жок. Бул параметр сиз дүйнөлүк белгилерди бириктирип келген мүмкүн болуучу көйгөйлөрдү табууга мүмкүнчүлүк берет. Тилекке каршы, кээ бир C китепканалар Китепканалардан ошондой эле программаларына каймана жөнүндө бир нече жолу эскертүү алып келиши мүмкүн, ошондуктан бул тажрыйбаны колдонуу.

C мисалдары менен бул жерде мисал үч глобалдык белгилер түрлөрү бар:

INT мен = 1;

чыгаруу Билэ демилгеленди маалыматтар бөлүмүндө барган аныктамасы.

тышкы мен INT;

Орун бөлүп бербейт чөйрөсүнө шилтеме. аныктама же өзгөрүлмө жерде үчүн жалпы белгиси да бар болушу керек.

INT мен;

Жалпы белгиси. өзгөрмөнүн гана бар (бир же бир нече) жалпы белгилер болсо, анда ал чыгуу Билэ Uninitialized маалымат аймагында өтөт. Азаттык бир белгиси ошол эле өзгөрмөнүн үчүн бир нече жалпы белгилери жуурулушуп кетти. Алар ар түрдүү өлчөмдөгү бар болсо, анда ал ири өлчөмүн тандайт. Ошол эле өзгөрмөнүн аныктама бар болсо, Азаттык, бир арызда бир жалпы белгиси айланат.

--warn-жалпы параметр эскертүүлөрдүн беш түрүн өндүрө алат. Ар бир эскертүү сызыктардын бир жуп турат: биринчи эле туш белгиси катары сүрөттөлөт, ал эми экинчиси ошол эле ат менен кездешкен мурунку белгисин сүрөттөгөн. Бир же эки белгилер да жалпы белгиси болот.

1.

мурунтан белги үчүн аныктамасы бар, анткени, бир шилтеме бир жалпы белгиси бурулуп.

<Билэ> (<бөлүм>): эскертүү: `<белгиси> 'аныктама тарабынан жокко <делосуна> жалпы (<бөлүм>): эскертүү: бул жерде аныкталган

2.

белги үчүн кийинчерээк аныктоо туш келе турган болсо, шилтеме бир жалпы белгиси бурулуп. Бул белгилер башка тартипте туш болуп жатканын эске албаганда, өткөн учурда да ушундай болот.

<Билэ> (<бөлүм>): эскертүү: жалпы <билэни> оюна `<белгиси> 'аныктамасы (<бөлүмгө>): эскертүү: жалпы бул жерде

3.

мурунку эле орто жалпы белгиси менен жалпы белгисин күчөйт.

<Билэ> (<бөлүм>): эскертүү: `бир нече жалпы <белгиси> '<билэ> (<бөлүм>): эскертүү: мурунку бул жерде

4.

мурунку ири жалпы белгиси менен жалпы белгисин күчөйт.

<Билэ> (<бөлүм>): эскертүү: `<белгиси> 'ири орток <билэ> тарабынан жокко жалпы (<бөлүм>): эскертүү: көп таралган бул жерде

5.

мурунку кичине жалпы белгиси менен жалпы белгисин күчөйт. Бул белгилер башка тартипте туш болуп жатканын эске албаганда, өткөн учурда да ушундай болот.

<Билэ> (<бөлүм>): эскертүү: `<белгиси> 'кичине жалпы аныктоочу жалпы <билэ> (<бөлүм>): эскертүү: аз таралган бул жерде

--warn-курулуш

кандайдыр бир глобалдуу курулуш колдонулган болсо, эскертет. Бул бир нече объект билэ түрдө гана пайдалуу. COFF же ELF сыяктуу түрлөрү үчүн Азаттык дүйнөлүк курулушчулар колдонуп аныктоого мүмкүн эмес.

--warn-көп GP

Бир нече дүйнөлүк көрсөткүчү баалуулуктар зарыл болсо, эскертип чыгаруусу . Бул, мисалы, Alpha айрым иштетүүчүлөр үчүн гана маанилүү эмес. Тактап айтканда, кээ бир иштетүүчү атайын бир бөлүмдө ири бааланган туруктуулар койду. константалар базалык каттоодон салыштырмалуу чечүү режиминде аркылуу натыйжалуу толтурса болот, ошондуктан атайын реестр (глобалдык көрсөткүчү), ушул бөлүмдүн ортосуна көрсөтөт. чегерүү бери салыштырмалуу режими туруктуу жана кичинекей база каттоодон (мисалы, 16-бит), бул дайыма көлмөнүн максималдуу өлчөмүн чектейт. Ошентип, чоң программаларды, ал көп учурда мүмкүн болгон бардык туруктуулар чечүү мүмкүнчүлүгүнө ээ болуу үчүн бир нече дүйнөлүк көрсөткүчү баалуулуктарды пайдалануу зарыл. Бул параметр бул учурда пайда болгон сайын берилген эскертүү себеп болот.

--warn-бир жолу

Гана эмес, ага тиешелүү модулунун бир жолудан, ар бир белгисиз белги үчүн бир жолу эскертет.

--warn-бөлүк-тегиздөө

чыгаруучу бөлүмүнүн дареги, анткени трассанын алмаштырса, анда эскертип жатышат. Эреже катары, трасса киргизүү бөлүмгө менен аныкталат. ал ачык көрсөтүлгөн эмес, эгерде дареги гана өзгөртүлүшү мүмкүн; "Баштапкы" буйрук өтүү үчүн баштоо дареги көрсөтүлгөн эмес болсо, саналат.

--whole-Archive

--whole-Archive тандоосу кийин буйрук сабында көрсөтүлгөн ар бир ар- үчүн талап кылынган объект билэлэри шилтемени, Archive издөөнүн ордуна, тескерисинче,-жылы чыкпаган ар бир объект билэни кирет. Бул ар бир натыйжасында жалпы китепкана киргизилет каршы мажбурлап, адатта, жалпы китепкана салып Archive билэни буруш үчүн колдонулат. Бул параметр бир нече жолу пайдаланылышы мүмкүн.

Перс бул параметрин колдонгондой эки эскертүүлөр: Биринчиден, ДжСС Бул тандоо жөнүндө билген эмес, ошондуктан сен -Wl, -whole-Archive колдонуу керек. Экинчиден, ДжСС сиздин байланышта Маданият өзүнүн тизмесин кошуп, анткени -Wl, Маданият тизмесине кийин жоктугунан-бүт-Archive колдонууну унутуп, бул желек, ошондой эле кандай таасир алгысы келбеши мүмкүн эмес.

--wrap белгиси

Белги үчүн бандеролдо тийиши мүмкүн. Белги кандайдыр бир белгисиз шилтеме "__ wrap_symbol" чечкиндүү болот. Белгиси менен чечилет "__real_symbol" ар кандай белгисиз шилтеме.

Бул система иштеши үчүн жабуу камсыз кылуу үчүн колдонсо болот. бандеролдо милдети "__wrap_symbol" деп атала турган болот. бул система милдетин чакырып келсе, анда ал "__ real_symbol" деп керек.

Бул жерде анча маанилүү мисал болот:

жараксыз * __wrap_malloc (INT с) {printf ( "Мэллок% л \ н менен аталган", с); __real_malloc (с) кайтарып берет; }

Сиз --wrap Мэллок колдонуп Бул башка кодду -га шилтеме берген болсо, анда, баарын "Мэллок" милдетти "__wrap_malloc" деп атап, анын ордуна чакырат. чакыруу үчүн "__real_malloc" "__wrap_malloc" чыныгы "Мэллок" милдетин чакырам.

Сиз --wrap тандоосу жок шилтемелер ийгиликке үчүн, ошондой эле, "__real_malloc" милдетин камсыз кылуу үчүн мүмкүн. Эгер ушундай болсо, анда Сиз "__wrap_malloc" деп, ошол эле кезекте "__ real_malloc" аныктамасын койду болбоого тийиш; Эгер андай болсо, чогултуучулар Азаттык "Мэллок" аны ороп мүмкүнчүлүк бар чейин чакырыкты чече алат.

желекче-жаңы-dtags

--disable-жаңы-dtags

Бул Азаттык ELF-жылы жаңы динамикалык теги түзө аласыз. Бирок улуу ELF системалары, аларды түшүнүү мүмкүн эмес. Сиз желекче-жаңы-dtags көрсөтүү болсо, динамикалык теги керек болуп түзүлөт. Сиз --disable-жаңы-dtags көрсөтүү болсо, анда эч кандай жаңы динамикалык теги түзүлөт. Алыдын ала, жаңы динамикалык теги түзүлгөн жок. Ошол параметрлери гана жеткиликтүү forELF системалар бар экенин белгилешет.

I386 ишкер Азаттык ыкчам байланышкан китепкана (DLL) нормалдуу Аткаруучу ордуна өндүрүмдөрүн себеп -shared жолду колдойт. Сиз бул ыкмадан пайдаланууга сиз өндүрүш "* .dll" атын керек. Мындан тышкары, Азаттык толук стандарттуу "* тир.жарт" материалдары, Азаттык буйрук сабында объект File (чындыгында эле көрсөтүлгөн болушу мүмкүн колдойт, ал алар менен байланышкан ала камсыз кылуу үчүн, анын белгилери экспорттойт мурдараак жасалууга тийиш, кадимки бир объект делосуна сыяктуу).

буталарга жалпы жолдордон тышкары, эски i386 жана ишкер Азаттык колдоо кошумча буйрук сап параметрлери i386 ишкер максаттуу үчүн мүнөздүү болгон. баалуулуктарын алып Жолдор мейкиндикте да, алардын баалуулуктары бөлүнүп берилиши мүмкүн же барабар белгисин.

--add-stdcall-өлкө

Берилген болсо, stdcall ысмындагы (NN) менен белгилер болуп эсептелет, ошондой эле сыйрып ысмындагы менен экспорттоло алат.

--base-Билэ Билэ

Dlltool менен DLLs жаратуу үчүн зарыл болгон баардык көчүрүү базалык дарегин сактап турган бир билэ атын сааты колдонуу.

--dll

бир DLL үзгүлтүксүз Аткарылуучу ордуна түзүү. Ошондой эле -shared пайдаланууга берилет "тир.жарт" Киллэрээри бир "китепкана" көрсөтүлүшү мүмкүн.

желекче-stdcall-fixup

--disable-stdcall-fixup

-га шилтеме берген, ал чече албай турган бир белгиси деп тапса, ал `` так байланыштырууну кылууга аракет кылат "," белгиси аты (stdcall и cdecl) түрүндө гана айырмаланат башка аныкталган белгиси издеп менен байланыштыруу менен белгиси чечет беттешүүсүнө. Мисалы, белгисиз белгиси "_foo" милдети "_foo @ 12", же белгисиз белгиси "_bar 16 @" өзгөчөлүгү менен тыгыз байланышта болушу мүмкүн байланыштуу болушу мүмкүн "_bar". Азаттык бул иш кылса, ал, адатта, шилтеме жок болушу керек, анткени, ал бир эскертүү басып, ал эми үчүнчү жактын dlls түзүлгөн кээде импорттук китепканалар жарактуу болушу үчүн бул өзгөчүлүктү керек. Сиз желекче-stdcall-fixup көрсөтүү болсо, анда бул мүмкүнчүлүк толук иштетилген жана эскертүү басылып чыккан эмес жатат. Сиз --disable-stdcall-fixup көрсөтүү болсо, анда бул мүмкүнчүлүк чектелген болуп саналат жана мындай келишпестиктер ката болуп саналат.

--export-бардык белгилери

берилген болсо, DLL куруу үчүн колдонулган объектилердин бардык дүйнөлүк белгилер DLL аркылуу экспорттолот. Эгерде кайсы бир ташылып белгилер болмок эмес болсо бул демейки деп жазылган. белгилер ачык DEF документтеринде же кыйыр милдети аркылуу ташылып аркылуу экспорттолот касиет болсо, демейки бул параметр берилген болбосо, башка эч нерсе экспорттогон эмес болуп саналат. белгилер "DllMain 12 @" Белгилей кетсек, "DllEntryPoint 0 @", "DllMainCRTStartup 12 @" жана "impure_ptr" жазуусу экспорттоого болбойт. Ошондой эле, башка DLLs алынып келинген белгилер кайрадан экспорттолуп мүмкүн эмес да, мисалы, "_head_" же "_iname" менен аякташы менен башталган эле DLL ички катмарын көрсөтүп белгилер болот. Мындан тышкары, "libgcc", "libstd ++", "libmingw32", же "crtX.o" эч кандай белгилер экспорттолот. алардын ысымдары "__rtti_" же "__builtin_" ташылып мүмкүн эмес, ал менен башталат C ++ DLLs менен жардам берүү үчүн белгилер. Акыр-аягы, ташылып кетпеген cygwin-жеке белгилер көп тизмеси бар (албетте, бул cygwin максаттары үчүн DLLs курууда иштейт).

Бул cygwin-эске келет: "_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 ", жана"-чөйрөнү ".

--exclude-шарттуу белгиси, белгиси, ...

жазуусу ташылып тийиш эмес белгилер тизмесин белгилейт. белгиси аталыштары үтүр же чекит менен ажыратылышы мүмкүн.

--exclude-Либералдар LIB, LIB, ...

шарттуу түрдө экспортко эмес, керек болгон Archive китепканалар тизмесин белгилейт. китепкана бөлүмүн ачуу аталыштары үтүр же чекит менен ажыратылышы мүмкүн. "--exclude-Либералдар БҮТ" автоматтык экспортунун бардык Archive китепканаларына белгилерди жокко көрсөтүү. ачык бир тир.жарт делосуна көрсөтүлгөн белгилер карабастан, бул тандоосу боюнча мурдагыдай эле, экспортко чыгарылат.

--file-тегиздөө

билэ трассаны аныктагыла. делосуна Рубрикалар ар дайым ушул санына көбөйтүү жолу менен билэ сезилбей баштайт. Бул Демейки 512 из.

--heap камдык

--heap камдык, иш

Бул программага үйүлүп катары колдонулууга тийиш болгон сактап (жана, иш) үчүн эс тутум өлчөмүн көрсөтүү керек. демейки 1Mb корголгон жатат, 4K жасаган.

--image-базасынын наркы

Программанын же DLL базалык дареги сыяктуу маанини колдонот. Бул сиздин программа же лари жүктөгөндө кайсы колдонулат төмөн турган жер. Көчүүгө жана dlls иш-аракеттеринин натыйжалуулугун жогорулатуу зарылдыгын азайтуу үчүн, ар бири уникалдуу базасы дарегин жана башка dlls кайчылашып калбашы керек. Демейки 0x400000 Executables үчүн, dlls үчүн 0x10000000 болуп саналат.

--kill-өзгөртүлгөн

Берилген болсо, анда stdcall рт (NN) алар ташылып чейин белгилер чейин чечип берет.

--major-сүрөт-версия балл

`` Сүрөт чыгаруу '' негизги санын орнотот. Defaults 1.

--major-OS-версия балл

`` Иштөө '' негизги санын орнотот. Defaults 4.

--major-чакан-версия балл

`` Чакан айы '' негизги санын орнотот. Defaults 4.

--minor-сүрөт-версия балл

`` Сүрөт чыгаруу "," бир аз санын орнотот. Defaults 0.

--minor-OS-версия балл

`` Иштөө "" анча-мынча саны орнотот. Defaults 0.

--minor-чакан-версия балл

`` Чакан чыгаруу "," бир аз санын орнотот. Defaults 0.

--output-Постту билэ

Азаттык Азаттык иштеп жатат DLL ылайык DEF билэни камтыйт Билэ Билэ түзөт. Бул DEF билэ (аталган керек "* тир.жарт") "dlltool" менен импорт китепкананы түзүү үчүн пайдаланылышы мүмкүн же жазуусу же толугу менен ташылып белгилерди шилтеме катары колдонулушу мүмкүн.

--out-implib делосуна

Азаттык Азаттык иштеп жатат DLL ылайык импорттук LIB камтыйт Билэ Билэ түзөт. Бул импорттук LIB ( "* .dll.a" деп аталат, же "* .а" өндүрүлгөн DLL каршы кардарларды байланыштыруу үчүн колдонулушу мүмкүн, бул жүрүм-турум бир өзүнчө "dlltool" импорттук китепкана түзүү кадамды өткөзүп берүүгө мүмкүнчүлүк берет.

желекче-унаам-сүрөт-базасы

бир "--image-базасын" аргумент аркылуу көрсөтүлгөн каралбаса, жазуусу, DLLs үчүн сүрөт базасын тандашат. Ар бир DLL үчүн уникалдуу сүрөт негиздерин түзүү dllname алынган таштанды колдонуу менен, анын ичинде эс программасын аткарууну кийинкиге калтыруу мүмкүн кагылышуулар жана көчүүлөр алыс болобуз.

--disable-унаам-сүрөт-базасы

жазуусу уникалдуу сүрөт базасын жарата бербейт. эч кандай колдонуучу көрсөтүлгөн сүрөттөлүш базасы ( "--image-база") бар болсо, анда платформа демейки колдонушат.

--dll-издөө-Prefix сап

импорттук китепкана жок DLL үчүн динамикалуу байланыштырып жатканда, "<сап> .dll" ордуна "LIB .dll" үчүн издөө. Бул жүрүм-турум ар `` subplatforms үчүн курулган DLLs ортосунда жеңил айырмачылык берет '': эне, cygwin, uwin, PW ж.б. Мисалы, cygwin DLLs, адатта, "--dll-издөө-байлм = cyg" колдонушат.

желекче-унаам-импорттук

DLLs тартып DATA импортунун "__imp__symbol" үчүн "_symbol" татаал байланыштырууну кыл, ошол DATAexports импорттук китепканаларын куруу зарыл болгон thunking белгилерди түзүү. Бул негизинен "жөн гана иштөө" болот --- бирок кээде бул билдирүүнү көрө алат:

"Өзгөрүлмө" 'унаам-келинген. LD карата документтерди окуп коюш керек болушу мүмкүн эмес ", желекче-унаам-ташып" чоо-жайын билүү үчүн. "

Бул кабар бир нече (суб) деген сөз айкашы, акырында эки турактуулуктарынын (Win32 импорт үстөл бир гана уруксат) суммасына берген дарегин пайдаланып жатканда пайда болот. бул болушу мүмкүн учурдар DLL импорттолгон з өзгөрүүлөрдүн мүчөсү талаага пайдаланып, ошондой эле бир DLL алынып келинген бир катар өзгөрмөнүн ичине дайыма индексин колдонуу. Ар бир multiword өзгөрмө (Arrays, structs, узак, узак, ж.б.) бул ката абалына алып келиши мүмкүн. Бирок, көз карандысыз күнөө экспортко өзгөрмөнүн так маалыматтар түрүн, LD дайыма аны чыгарылган эскертүү аныктоо жана чыгуу.

карабастан, экспортко өзгөрмөнүн маалыматтар түрүн, ушул көйгөйдү чечүү үчүн бир нече жолдору бар:

Бир жолу желекче-узактыгы-жасалма-reloc которууну пайдалануу болуп саналат. Бул узактыгы айлана-чөйрө үчүн кардар кодексине шилтеме жөнгө милдетин кетет, ошондуктан бул ыкма узактыгы environtment бул мүмкүнчүлүктү колдосо гана иштейт.

Экинчи чечим өзгөрмө болуп: "Туруктуу" бир күч болуп саналат --- деп, белгисиз жана ун-optimizable компилештирүү убакта. Бүтүн үчүн, эки мүмкүнчүлүктөр бар: а) indexee (тизилип, анын дареги) өзгөрмө, же б) "туруктуу" индекси өзгөрмө болот. Ошентип:

сырткы түрү extern_array []; extern_array [1] -> {туруксуз түрү * Т = extern_array; т [1]}

же

сырткы түрү extern_array []; extern_array [1] -> {туруксуз ички Т = 1; extern_array [т]}

structs (жана башка multiword маалымат түрлөрү) гана параметр өзү з (же узун, же ...) жасоо үчүн өзгөрүлмө:

тышкы з с extern_struct; extern_struct.field -> {учуучу з с * Т = & extern_struct; t-> талаа}

же

сырткы узун узун extern_ll; extern_ll -> {туруксуз узак узак * local_ll = & extern_ll; * Local_ll}

Бул кыйынчылык менен мамиле бир үчүнчү жолу күнөө белгиси үчүн "Жалал-ташып" таштап, "__declspec (dllimport)" менен белгилөө керек. Бирок, статикалык китепкана шилтеме / сиз DLL шилтеме кура турган кардар кодун, бир DLL куруп жаткан жокпу көрсөтүп #defines-убакытты түзөт, же жөн гана бекемдөө үчүн зарыл экендигин иш жүзүндө. маселе "туруктуу ордун менен түздөн-түз дарегин" чечүүнүн ар кандай ыкмаларын тандоо кылуу менен, сиз типтүү реалдуу дүйнө колдонулушун эске алуу керек:

Original:

--foo.h тышкы Int Гроу []; --foo.c #include "foo.h" жараксыз негизги (INT argc, Исахар ** argv) {printf ( "% г \ н", Гроу [1]); }

Solution 1:

--foo.h тышкы Int Гроу []; --foo.c #include "foo.h" жараксыз негизги (INT argc, Исахар ** argv) {/ * Бул өптөгөн win32 жана cygwin үчүн; "Оптималдаштыруу" жок * / учуучу Int * Просто = Гроу; printf ( "% г \ н", Парр [1]); }

Solution 2:

--foo.h / * Эскертүү: унаам-экспорт болжолдонот (эч кандай __declspec (dllexport)) * / #if (аныкталган (_WIN32) || аныкталган (__ CYGWIN__)) && \ (аныкталган (FOO_BUILD_DLL) || аныкталган (FOO_STATIC )) #define FOO_IMPORT __declspec (dllimport) # Башка #define FOO_IMPORT #endif тышкы FOO_IMPORT ички Гроу []; --foo.c #include "foo.h" жараксыз негизги (INT argc, Исахар ** argv) {printf ( "% г \ н", Гроу [1]); }

Бул көйгөйдү алдын алуу үчүн төртүнчү жолу бузган өзгөрмөлөр үчүн иш макамын маалыматтар макамын бир эмес, пайдалануу үчүн кайра-кодду китепкана болуп саналат (мисалы, set_foo () жана get_foo () accessor милдеттери).

--disable-унаам-импорттук

DLLs тартып DATAimports үчүн "_symbol" "__imp__symbol" үчүн sophisticalted байланыштырууну аткарууга аракет жок.

желекче-узактыгы-жасалма-reloc

кодду желекче-унаам-импорттук бөлүмүндө баяндалган сөздөр бар болсо, башкача айтканда, DATAimports эмес нөлгө ордун менен DLL ушул которуу аяттарды өзгөртүүгө узактыгы айлана-чөйрө менен колдонсо болот "узактыгы жасалма көчүрүү" бир багытын түзөт кардар кодексине мындай маалыматтарга дал келүүгө тийиш.

--disable-узактыгы-жасалма-reloc

DLLs эмес нөл ордун DATA импортунун жасалма көчүрүү түзбөйт. Бул демейки болуп саналат.

желекче-кошумча иш-такта

унаам-импорттук белгиси thunking байланыштуу кошумча мүчүлүштүктөрдү маалыматын көргөзүү.

--section-тегиздөө

бөлүм трассаны орнотот. эс-бөлүмдөрүн ар дайым бул сан бир нече жолу болуп даректер боюнча башталат. Defaults 0x1000 үчүн.

--stack камдык

--stack камдык, иш

Бул программага кабат катары колдонулууга тийиш болгон сактап (жана, иш) үчүн эс тутум өлчөмүн көрсөтүү керек. демейки 2Mb корголгон жатат, 4K жасаган.

--subsystem турган

--subsystem турган: негизги

--subsystem ичинен: негизги. жашы жете элек

программа боюнча иш кылат, ага ылайык системасын белгилейт. Укуктук баалуулуктар, "эне" деп, "Windows", "жубатуу", жана "POSIX". Ошондой эле, учурда чакан нускасын коюшу мүмкүн.

Маанилүү иш: буйруктар, атап айтканда ЭЭМ колдонулуп келе жатканын көрүп, бир киши (% адам) колдонуу.