İngilizceFransızcaİspanyolca

Sunucuları çalıştırın | Ubuntu > | Fedora > |


OnWorks favicon'u

h8300-hms-ld - Bulutta Çevrimiçi

Ubuntu Online, Fedora Online, Windows çevrimiçi öykünücüsü veya MAC OS çevrimiçi öykünücüsü üzerinden OnWorks ücretsiz barındırma sağlayıcısında h8300-hms-ld'yi çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen h8300-hms-ld komutudur.

PROGRAM:

ADI


ld - GNU bağlayıcısı olan LD'yi kullanma

SİNOPSİS


ld [seçenekleri] objfile ...

TANIM


ld bir dizi nesne ve arşiv dosyasını birleştirir, verilerini yeniden konumlandırır ve sembolü bağlar
Referanslar. Genellikle bir programı derlemenin son adımı çalıştırmaktır. ld.

ld AT&T'nin Bağlantı Düzenleyicisinin bir üst kümesinde yazılmış Linker Komut Dili dosyalarını kabul eder
Bağlama süreci üzerinde açık ve tam kontrol sağlamak için Komut Dili sözdizimi.

Bu kılavuz sayfası komut dilini açıklamaz; görmek ld "info" girişi veya
manual ld: komut dili ve diğer yönler hakkında tüm ayrıntılar için GNU bağlayıcısı
GNU bağlayıcısının

Bu sürüm ld nesne dosyaları üzerinde çalışmak için genel amaçlı BFD kitaplıklarını kullanır. Bu
veriyor ld nesne dosyalarını birçok farklı biçimde okumak, birleştirmek ve yazmak için --- için
örneğin, COFF veya "a.out". Farklı formatlar herhangi birini üretmek için birbirine bağlanabilir.
kullanılabilir nesne dosyası türü.

Esnekliğinin yanı sıra, GNU bağlayıcısı, sağlamada diğer bağlayıcılardan daha yararlıdır.
teşhis bilgileri. Birçok bağlayıcı, bir sorunla karşılaştıktan hemen sonra yürütmeyi bırakır.
hata; ne zaman mümkünse, ld diğer hataları belirlemenize izin vererek yürütmeye devam eder
(veya bazı durumlarda, hataya rağmen bir çıktı dosyası almak için).

GNU bağlayıcı ld geniş bir durum yelpazesini kapsaması ve olabildiğince uyumlu olması amaçlanmıştır.
mümkün olduğunca diğer bağlayıcılarla. Sonuç olarak, kontrol etmek için birçok seçeneğiniz var.
davranışı.

SEÇENEKLER


Bağlayıcı, çok sayıda komut satırı seçeneğini destekler, ancak gerçek uygulamada bunlardan birkaçı
herhangi bir özel bağlamda kullanılır. Örneğin, sık kullanım ld bağlantı kurmaktır
standart, desteklenen bir Unix sisteminde standart Unix nesne dosyaları. Böyle bir sistemde,
"hello.o" dosyasını bağla:

yaparım /lib/crt0.o merhaba.o -lc

Bu anlatır ld adlı bir dosya üretmek için çıktı dosyayı bağlamanın sonucu olarak
"/lib/crt0.o" ile "hello.o" ve standarttan gelecek olan "libc.a" kitaplığı
arama dizinleri. (bkz: tartışma -l Aşağıdaki seçenek.)

Komut satırı seçeneklerinden bazıları ld komut satırının herhangi bir noktasında belirtilebilir.
Ancak, dosyalara atıfta bulunan seçenekler, örneğin -l or -T, dosyanın şurada okunmasına neden olur
nesne dosyalarına göre seçeneğin komut satırında göründüğü nokta ve
diğer dosya seçenekleri. Dosya dışı seçenekleri farklı bir argümanla tekrarlamak ya
daha fazla etki yok veya önceki oluşumları geçersiz kılıyor (komutta daha solda olanlar
satırı) bu seçeneğin. Birden fazla anlamlı olarak belirtilebilecek seçenekler şunlardır:
aşağıdaki açıklamalarda belirtilmiştir.

Seçenek olmayan argümanlar, birbirine bağlanacak nesne dosyaları veya arşivlerdir. Onlar
bir nesne dosyası dışında komut satırı seçeneklerini izleyebilir, bunlardan önce gelebilir veya bunlarla karıştırılabilir.
argüman bir seçenek ile onun argümanı arasına yerleştirilemez.

Bağlayıcı genellikle en az bir nesne dosyasıyla çağrılır, ancak başka bir nesne belirtebilirsiniz.
kullanarak ikili giriş dosyalarının formları -l, -R, ve komut dosyası komut dili. Eğer yok hayır ikili
girdi dosyaları belirtilir, bağlayıcı herhangi bir çıktı üretmez ve
mesaj Yok hayır giriş Dosyaları.

Bağlayıcı bir nesne dosyasının biçimini tanıyamazsa, bunun bir nesne dosyası olduğunu varsayacaktır.
bağlayıcı komut dosyası Bu şekilde belirtilen bir komut dosyası, kullanılan ana bağlayıcı komut dosyasını artırır.
bağlantı (varsayılan bağlayıcı komut dosyası veya kullanılarak belirtilen -T). Bu
özelliği, bağlayıcının bir nesne veya bir nesne gibi görünen bir dosyaya bağlanmasına izin verir.
arşiv, ancak aslında yalnızca bazı sembol değerlerini tanımlar veya "GİRİŞ" veya "GRUP" kullanır.
diğer nesneleri yükleyin. Bu şekilde bir komut dosyası belirtmenin yalnızca ana
bağlayıcı komut dosyası; kullan -T varsayılan bağlayıcı komut dosyasını tamamen değiştirme seçeneği.

Adları tek bir harf olan seçenekler için, seçenek bağımsız değişkenleri aşağıdakilerden birini izlemelidir:
araya boşluk koymadan seçenek harfi veya ayrı argümanlar olarak verilebilir
onları gerektiren seçeneğin hemen ardından.

Adları birden çok harften oluşan seçenekler için, bir veya iki tire işaretinden önce gelebilir.
seçenek adı; Örneğin, -iz-sembol ve --iz-sembol eşdeğerdir. Not --- orada
bu kuralın bir istisnasıdır. Küçük harf 'o' ile başlayan birden çok harf seçeneği
önüne sadece iki tire konulabilir. Bu, kafa karışıklığını azaltmak için -o seçenek. Yani
örneğin -omajik çıktı dosyası adını şu şekilde ayarlar sihirli oysa --omajik NMAGIC'i ayarlar
çıktıdaki bayrak.

Çok harfli seçeneklere ilişkin argümanlar, seçenek adından bir
eşittir işareti veya seçeneğin hemen ardından ayrı argümanlar olarak verilebilir.
onları gerektirir. Örneğin, --iz-sembol foo ve --trace-symbol=foo eşdeğerdir.
Çok harfli seçeneklerin adlarının benzersiz kısaltmaları kabul edilir.

Not --- eğer bağlayıcı bir derleyici sürücüsü aracılığıyla dolaylı olarak çağrılıyorsa (örn. gcc) sonra
tüm linker komut satırı seçeneklerinin ön eki şu şekilde olmalıdır: -Wl, (ya da hangisi uygunsa
belirli derleyici sürücüsü için) şöyle:

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

Bu önemlidir, çünkü aksi takdirde derleyici sürücü programı sessizce
linker seçenekleri, kötü bir bağlantıya neden olur.

GNU linker tarafından kabul edilen genel komut satırı anahtarlarının bir tablosu:

-aAnahtar kelime
Bu seçenek, HP/UX uyumluluğu için desteklenir. NS Anahtar kelime argüman şunlardan biri olmalı
Teller arşiv, Paylaşılanya da varsayılan. -arşiv işlevsel olarak eşittir
-Bstatik, ve diğer iki anahtar kelime işlevsel olarak eşdeğerdir -Bdinamik. Bu
seçeneği herhangi bir sayıda kullanılabilir.

-Amimari
--mimari=mimari
Şu anki sürümde ld, bu seçenek yalnızca Intel 960 ailesi için kullanışlıdır.
mimariler. Şöyle ld yapılandırma, mimari argüman tanımlar
960 ailesindeki belirli bir mimari, bazı güvenlik önlemleri sağlar ve
arşiv-kütüphane arama yolu.

Gelecek sürümleri ld diğer mimariler için benzer işlevleri destekleyebilir
aileler.

-b giriş formatı
--format=giriş formatı
ld birden fazla nesne dosyasını destekleyecek şekilde yapılandırılabilir. Eğer senin ld is
bu şekilde yapılandırılmış, kullanabilirsiniz -b giriş için ikili formatı belirleme seçeneği
komut satırında bu seçeneği izleyen nesne dosyaları. Hatta ld yapılandırılmış
alternatif nesne biçimlerini desteklemek için genellikle bunu belirtmeniz gerekmez, çünkü ld
her birinde en olağan biçimi varsayılan bir giriş biçimi olarak bekleyecek şekilde yapılandırılmalıdır.
makinesi. giriş formatı tarafından desteklenen belirli bir biçimin adı olan bir metin dizesidir.
BFD kütüphaneleri. (Kullanılabilir ikili formatları ile listeleyebilirsiniz. objdump -i.)

Olağandışı bir ikili dosya ile dosyaları birbirine bağlıyorsanız bu seçeneği kullanmak isteyebilirsiniz.
biçim. Ayrıca kullanabilirsiniz -b biçimleri açıkça değiştirmek için (nesne dosyalarını bağlarken
farklı formatlarda), dahil ederek -b giriş formatı her nesne dosyası grubundan önce
belirli bir formatta.

Varsayılan biçim "GNUTARGET" ortam değişkeninden alınmıştır.

"TARGET" komutunu kullanarak bir komut dosyasından giriş biçimini de tanımlayabilirsiniz;

-c MRI komut dosyası
--mri-script=MRI komut dosyası
MRI tarafından üretilen bağlayıcılarla uyumluluk için, ld içinde yazılmış komut dosyalarını kabul eder.
MRI Uyumlu Komut Dosyası Dosyalarında açıklanan alternatif, kısıtlı komut dili
GNU ld belgelerinin bölümü. Seçenek ile MRI komut dosyalarını tanıtın -c; kullanım
the -T genel amaçlı yazılmış bağlayıcı komut dosyalarını çalıştırma seçeneği ld komut dosyası
dilim. Eğer MRI-cmd dosyası bulunmuyor, ld belirtilen dizinlerde arar
herhangi biri tarafından -L seçenekleri.

-d
-dc
-dp Bu üç seçenek eşdeğerdir; uyumluluk için birden çok form desteklenir
diğer bağlayıcılar ile. Yeniden yerleştirilebilir bir çıktı olsa bile ortak sembollere boşluk atarlar.
dosya belirtilir (ile -r). "FORCE_COMMON_ALLOCATION" komut dosyası komutu,
aynı etki.

-e giriş
--giriş=giriş
kullanım giriş yerine programınızın yürütülmesini başlatmak için açık bir sembol olarak
varsayılan giriş noktası. Adlandırılmış bir sembol yoksa giriş, bağlayıcı deneyecek
ayrıştırmak giriş numara olarak girin ve bunu giriş adresi olarak kullanın (numara
10 tabanında yorumlanır; bir lider kullanabilirsiniz 0x taban 16 için veya önde gelen 0 baz için
8).

--exclude-lib'ler lib,lib, ...
Sembollerin otomatik olarak alınmaması gereken arşiv kitaplıklarının bir listesini belirtir
ihraç edildi. Kitaplık adları virgül veya iki nokta üst üste ile sınırlandırılabilir. belirtme
"--exclude-libs ALL", tüm arşiv kitaplıklarındaki sembolleri otomatik dışa aktarmanın dışında tutar.
Bu seçenek yalnızca bağlayıcının i386 PE hedefli bağlantı noktası ve ELF için kullanılabilir
hedeflenen portlar i386 PE için, bir .def dosyasında açıkça listelenen semboller hala
bu seçeneğe bakılmaksızın dışa aktarılır. ELF hedefli bağlantı noktaları için bundan etkilenen semboller
seçeneği gizli olarak kabul edilecektir.

-E
--ihracat-dinamik
Dinamik olarak bağlı bir yürütülebilir dosya oluştururken, tüm sembolleri dinamik sembole ekleyin
tablo. Dinamik sembol tablosu, dinamikten görülebilen semboller kümesidir.
çalışma zamanında nesneler.

Bu seçeneği kullanmazsanız, dinamik sembol tablosu normalde yalnızca
bağlantıda belirtilen bazı dinamik nesneler tarafından başvurulan bu semboller.

Sembollere geri dönmesi gereken dinamik bir nesneyi yüklemek için "dlopen" kullanırsanız
başka bir dinamik nesne yerine program tarafından tanımlanmışsa, muhtemelen
programın kendisini bağlarken bu seçeneği kullanmanız gerekir.

Ayrıca, hangi sembollerin ekleneceğini kontrol etmek için sürüm komut dosyasını da kullanabilirsiniz.
çıkış formatı destekliyorsa dinamik sembol tablosu. açıklamasına bakın
--version-script @ref{VERSION} içinde.

-EB Büyük endian nesneleri bağlayın. Bu, varsayılan çıktı biçimini etkiler.

-EL Küçük endian nesneleri bağlayın. Bu, varsayılan çıktı biçimini etkiler.

-f
--ek isim
ELF paylaşımlı bir nesne oluştururken, dahili DT_AUXILIARY alanını şu şekilde ayarlayın:
belirtilen ad. Bu, dinamik bağlayıcıya paylaşılan simge tablosunun
nesne, paylaşılan nesnenin sembol tablosunda yardımcı filtre olarak kullanılmalıdır.
isim.

Daha sonra bir programı bu filtre nesnesine bağlarsanız, o zaman,
program, dinamik bağlayıcı DT_AUXILIARY alanını görecektir. Dinamik bağlayıcı ise
filtre nesnesinden herhangi bir sembolü çözer, önce bir olup olmadığını kontrol eder.
paylaşılan nesnedeki tanım isim. Varsa, yerine kullanılacaktır.
filtre nesnesindeki tanım. paylaşılan nesne isim var olması gerekmez. Böylece
paylaşılan nesne isim belirli bir alternatif uygulama sağlamak için kullanılabilir
işlevler, belki hata ayıklama veya makineye özel performans için.

Bu seçenek birden fazla belirtilebilir. DT_AUXILIARY girişleri oluşturulacak
komut satırında göründükleri sırayla.

-F isim
--filtre isim
ELF paylaşımlı nesne oluştururken, dahili DT_FILTER alanını belirtilen değere ayarlayın.
isim. Bu, dinamik bağlayıcıya, paylaşılan nesnenin sembol tablosunun hangi
oluşturuluyor, paylaşılan nesnenin sembol tablosunda bir filtre olarak kullanılmalıdır.
isim.

Daha sonra bir programı bu filtre nesnesine bağlarsanız, o zaman,
program, dinamik bağlayıcı DT_FILTER alanını görecektir. Dinamik bağlayıcı
sembolleri her zamanki gibi filtre nesnesinin sembol tablosuna göre çözün, ancak
aslında paylaşılan nesnede bulunan tanımlara bağlanır isim. Böylece
filtre nesnesi, nesne tarafından sağlanan sembollerin bir alt kümesini seçmek için kullanılabilir
isim.

Bazı eski bağlayıcılar -F için bir derleme araç zinciri boyunca seçenek
hem girdi hem de çıktı nesne dosyaları için nesne dosyası biçimini belirleme. GNU bağlayıcı
bu amaç için başka mekanizmalar kullanır: -b, --biçim, --oformat seçenekler,
Bağlayıcı komut dosyalarında "TARGET" komutu ve "GNUTARGET" ortam değişkeni. GNU
bağlayıcı görmezden gelecek -F ELF paylaşılan nesnesi oluşturulmadığında seçenek.

-fini isim
Bir ELF yürütülebilir veya paylaşılan nesne oluştururken, yürütülebilir dosya veya paylaşılan nesne olduğunda NAME öğesini arayın.
DT_FINI işlevin adresine ayarlanarak paylaşılan nesne kaldırılır. Tarafından
varsayılan olarak, bağlayıcı, çağrılacak işlev olarak "_fini"yi kullanır.

-g Yok sayıldı. Diğer araçlarla uyumluluk için sağlanmıştır.

-Gdeğer
--gpsize=değer
GP kaydı kullanılarak optimize edilecek nesnelerin maksimum boyutunu ayarlayın. boyut. Bu
yalnızca yerleştirmeyi destekleyen MIPS ECOFF gibi nesne dosya biçimleri için anlamlıdır.
büyük ve küçük nesneleri farklı bölümlere ayırır. Bu, diğer nesne için yoksayılır
dosya formatları.

-hisim
-soname=isim
ELF paylaşımlı nesne oluştururken, dahili DT_SONAME alanını belirtilen değere ayarlayın.
isim. Bir yürütülebilir dosya, DT_SONAME alanına sahip paylaşılan bir nesneye bağlandığında,
daha sonra yürütülebilir dosya çalıştırıldığında dinamik bağlayıcı paylaşılan dosyayı yüklemeye çalışır.
verilen dosya adını kullanmak yerine DT_SONAME alanı tarafından belirtilen nesne
bağlayıcı.

-i Artımlı bir bağlantı gerçekleştirin (seçenek ile aynı -r).

-içinde isim
Bir ELF yürütülebilir veya paylaşılan nesne oluştururken, yürütülebilir dosya veya paylaşılan nesne olduğunda NAME öğesini arayın.
paylaşılan nesne, işlevin adresine DT_INIT ayarlanarak yüklenir. Tarafından
varsayılan olarak, bağlayıcı, çağrılacak işlev olarak "_init" kullanır.

-larşiv
--kütüphane=arşiv
Arşiv dosyası ekle arşiv Bağlanacak dosyalar listesine. Bu seçenek herhangi bir şekilde kullanılabilir.
defalarca. ld "lib" oluşumları için yol listesini arayacaktırarşiv.a" için
her arşiv belirtildi.

Paylaşımlı kütüphaneleri destekleyen sistemlerde, ld ile kütüphaneleri de arayabilir
".a" dışındaki uzantılar. Özellikle ELF ve SunOS sistemlerinde, ld bir arayacak
ile bir kitaplık aramadan önce ".so" uzantılı bir kitaplık dizini
".a" uzantısı. Kural olarak, bir ".so" uzantısı, paylaşılan bir kitaplığı belirtir.

Bağlayıcı, üzerinde belirtildiği yerde bir arşivi yalnızca bir kez arayacaktır.
komut satırı. Arşiv, bazı nesnelerde tanımlanmamış bir sembolü tanımlarsa
komut satırında arşivden önce görünen linker,
arşivden uygun dosya(lar) Ancak, bir nesnedeki tanımsız bir sembol
daha sonra komut satırında görünmesi, bağlayıcının arşivde arama yapmasına neden olmaz
tekrar.

Bak -( bağlayıcıyı arşivleri birden çok kez aramaya zorlamanın bir yolu için seçenek.

Komut satırında aynı arşivi birden çok kez listeleyebilirsiniz.

Bu tür arşiv araması, Unix bağlayıcıları için standarttır. Ancak, eğer
kullanma ld AIX'te, bunun AIX bağlayıcısının davranışından farklı olduğunu unutmayın.

-Lsearchdir
--kütüphane-yolu=searchdir
Yol ekle searchdir olan yollar listesine ld arşiv kitaplıklarını arayacak ve
ld kontrol komut dosyaları. Bu seçeneği istediğiniz sayıda kullanabilirsiniz. dizinler
komut satırında belirtilen sırayla aranır. dizinler
komut satırında belirtilenler, varsayılan dizinlerden önce aranır. Tüm -L
seçenekler hepsi için geçerlidir -l seçeneklerin göründüğü sıraya bakılmaksızın seçenekler.

If searchdir "=" ile başlar, ardından "=" yerine sistem kökü önek,
bağlayıcı yapılandırıldığında belirtilen yol.

Aranan varsayılan yol kümesi (belirtilmeden -L) hangisine bağlı
öykünme modu ld kullanıyor ve bazı durumlarda nasıl yapılandırıldığı hakkında da.

Yollar, "SEARCH_DIR" komutuyla bir bağlantı komut dosyasında da belirtilebilir.
Bu şekilde belirtilen dizinler, bağlayıcı komut dosyasının bulunduğu noktada aranır.
komut satırında görünür.

-möykünme
öykünmek öykünme bağlayıcı. Kullanılabilir emülasyonları listeleyebilirsiniz.
--ayrıntılı or -V seçenekleri.

Eğer -m seçeneği kullanılmaz, öykünme "LDEMULATION"dan alınır.
eğer tanımlanmışsa, ortam değişkeni.

Aksi takdirde, varsayılan öykünme, bağlayıcının nasıl yapılandırıldığına bağlıdır.

-M
--baskı-harita
Standart çıktıya bir bağlantı haritası yazdırın. Bir bağlantı haritası, aşağıdakiler hakkında bilgi sağlar:
bağlantı, aşağıdakiler dahil:

* Nesne dosyalarının ve sembollerin belleğe eşlendiği yer.

* Ortak sembollerin nasıl tahsis edildiği.

* Bağlantıya dahil edilen tüm arşiv üyeleri, aşağıdaki sembolden bahseder:
arşiv üyesinin getirilmesine neden oldu.

-n
--nsihirli
Bölümlerin sayfa hizalamasını kapatın ve mümkünse çıktıyı "NMAGIC" olarak işaretleyin.

-N
--omajik
Metin ve veri bölümlerini okunabilir ve yazılabilir olacak şekilde ayarlayın. Ayrıca, sayfa hizalama
veri segmentini seçin ve paylaşılan kitaplıklara karşı bağlantıyı devre dışı bırakın. çıkış formatı ise
Unix stili sihirli sayıları destekler, çıktıyı "OMAGIC" olarak işaretleyin. Not: Her ne kadar bir
PE-COFF hedefleri için yazılabilir metin bölümüne izin verilir,
Microsoft tarafından yayınlanan biçim belirtimi.

-- sihirli olmayan
Bu seçenek, uygulamanın etkilerinin çoğunu ortadan kaldırır. -N seçenek. Metin bölümünü şu şekilde ayarlar:
salt okunur olur ve veri segmentini sayfa hizalı olmaya zorlar. Not - bu seçenek
paylaşılan kitaplıklara bağlanmayı etkinleştirmez. Kullanmak -Bdinamik Bunun için.

-o çıktı
--çıktı=çıktı
kullanım çıktı tarafından üretilen programın adı olarak ld; bu seçenek değilse
belirtilen isim a.out varsayılan olarak kullanılır. "OUTPUT" komut dosyası komutu da
çıktı dosyası adını belirtin.

-O seviye
If seviye sıfırdan büyük sayısal değerlerdir ld çıktıyı optimize eder. Bu olabilir
önemli ölçüde daha uzun sürer ve bu nedenle muhtemelen yalnızca final için etkinleştirilmelidir
ikili.

-q
--emit-yer değiştirir
Yer değiştirme bölümlerini ve içeriğini tamamen bağlantılı yürütülebilir dosyalar halinde bırakın. Bağlantı gönder
analiz ve optimizasyon araçlarının doğru çalışması için bu bilgilere ihtiyaç duyabilir.
yürütülebilir dosyaların modifikasyonları. Bu, daha büyük yürütülebilir dosyalarla sonuçlanır.

Bu seçenek şu anda yalnızca ELF platformlarında desteklenmektedir.

-r
-- yeniden yerleştirilebilir
Yeniden konumlandırılabilir çıktı üretin --- yani, sırayla işlev görebilecek bir çıktı dosyası oluşturun.
giriş ld. Buna genellikle kısmen bağlayıcı. Yan etki olarak, ortamlarda
standart Unix sihirli sayılarını destekleyen bu seçenek aynı zamanda çıktı dosyasının
sihirli sayı "OMAGIC". Bu seçenek belirtilmezse, mutlak dosya
üretilmiş. C++ programlarını bağlarken bu seçenek irade değil referansları çözmek
yapıcılar; bunu yapmak için kullanın -Ur.

Bir girdi dosyası çıktı dosyasıyla aynı biçime sahip olmadığında, kısmi bağlantı
yalnızca bu girdi dosyası herhangi bir yer değiştirme içermiyorsa desteklenir. Farklı
çıktı biçimlerinin başka kısıtlamaları olabilir; örneğin bazı "a.out" tabanlı biçimler
diğer biçimlerdeki girdi dosyalarıyla kısmi bağlantı kurmayı hiçbir şekilde desteklemez.

Bu seçenek aynı şeyi yapar -i.

-R Dosya
--sadece-semboller=Dosya
Sembol adlarını ve adreslerini şuradan okuyun: Dosya, ancak yerini değiştirmeyin veya dahil etmeyin
çıktıda o. Bu, çıktı dosyanızın sembolik olarak mutlak
diğer programlarda tanımlanan bellek konumları. Bu seçeneği birden fazla kullanabilirsiniz.
bir Zamanlar.

Diğer ELF bağlayıcıları ile uyumluluk için, eğer -R seçeneği bir dizin takip eder
dosya adı yerine dosya adı olarak kabul edilir. -rpath seçeneği.

-s
--strip-all
Çıktı dosyasındaki tüm sembol bilgilerini atlayın.

-S
--şerit-hata ayıklama
Hata ayıklayıcı sembolü bilgilerini (tüm sembolleri değil) çıktı dosyasından çıkarın.

-t
--iz
Giriş dosyalarının adlarını şu şekilde yazdırın: ld onları işler.

-T Komut dosyaları
--script=Komut dosyaları
kullanım Komut dosyaları bağlayıcı komut dosyası olarak. Bu komut dosyasının yerini alır ldvarsayılan bağlayıcı komut dosyası
(eklemek yerine), yani komut dosyası için gerekli her şeyi belirtmeli
çıktı dosyasını tanımlayın. Eğer Komut dosyaları geçerli dizinde mevcut değil,
"ld", önceki dizinler tarafından belirtilen dizinlerde arar. -L seçenekler. çoklu
-T seçenekler birikiyor.

-u sembol
--tanımsız=sembol
Zorla sembol çıktı dosyasına tanımsız bir sembol olarak girilecek. Bunu yapmak,
örneğin, standart kitaplıklardan ek modüllerin bağlanmasını tetikleyin. -u olabilir
ek tanımsız semboller girmek için farklı seçenek argümanlarıyla tekrarlanır. Bu
seçeneği, "EXTERN" linker komut dosyası komutuna eşdeğerdir.

-Ur C++ programları dışındaki herhangi bir şey için bu seçenek şuna eşdeğerdir: -r: üretir
yeniden yerleştirilebilir çıktı --- yani, sırayla girdi işlevi görebilecek bir çıktı dosyası ld. Ne zaman
C++ programlarını bağlama, -Ur yok aksine, kuruculara yapılan referansları çöz -r. Yapar
kullanmak için çalışmıyor -Ur kendileri ile bağlantılı olan dosyalarda -Ur; bir kere
yapıcı tablosu oluşturuldu, eklenemez. Kullanmak -Ur sadece sonuncusu için
kısmi bağlantı ve -r diğerleri için.

--benzersiz[=BÖLÜM]
Eşleşen her giriş bölümü için ayrı bir çıkış bölümü oluşturur BÖLÜMveya eğer
isteğe bağlı joker karakter BÖLÜM her yetim giriş bölümü için argüman eksik. Bir
yetim bölümü, bir bağlayıcı komut dosyasında özellikle belirtilmeyen bir bölümdür. bunu kullanabilirsin
komut satırında birden çok kez seçeneği; Girişin normal birleşmesini önler
aynı ada sahip bölümler, bir bağlayıcı komut dosyasındaki çıktı bölümü atamalarını geçersiz kılar.

-v
--versiyon
-V için sürüm numarasını görüntüleyin ld. -V seçeneği ayrıca desteklenen öykünmeleri listeler.

-x
--Hepsini at
Tüm yerel sembolleri silin.

-X
--discard-yerlileri
Tüm geçici yerel sembolleri silin. Çoğu hedef için, bunların tümü yerel sembollerdir.
isimler ile başlar L.

-y sembol
--iz-sembol=sembol
Her bağlantılı dosyanın adını yazdırın. sembol görünür. Bu seçenek verilebilir
herhangi bir sayıda. Birçok sistemde, bir alt çizgi eklemek gerekir.

Bu seçenek, bağlantınızda tanımsız bir sembole sahip olduğunuz ancak bilmediğiniz durumlarda kullanışlıdır.
referans nereden geliyor.

-Y yol
Ekle yol varsayılan kitaplık arama yoluna. Bu seçenek Solaris için mevcuttur
uyumluluğu.

-z Anahtar kelime
Tanınan anahtar kelimeler şunlardır:

tarak
Birden çok yer değiştirme bölümünü birleştirir ve dinamik sembol araması yapmak için bunları sıralar
önbelleğe alma mümkündür.

defs
Nesne dosyalarında tanımsız sembollere izin vermez. Paylaşılanda tanımsız semboller
kütüphanelere hala izin verilmektedir.

initfirst
Bu seçenek yalnızca paylaşılan bir nesne oluştururken anlamlıdır. nesneyi işaretler
böylece çalışma zamanı başlatması, çalışma zamanı başlatma işleminden önce gerçekleşecektir.
aynı anda sürece getirilen diğer nesneler. Benzer şekilde
nesnenin çalışma zamanı sonlandırması, nesnenin çalışma zamanı sonlandırmasından sonra gerçekleşir.
diğer nesneler.

araya girmek
Sembol tablosunun tüm sembollerin önüne koyduğu nesneyi işaretler, ancak
birincil yürütülebilir dosya

yük fltr
Çalışma zamanında filtrelerinin hemen işleneceği nesneyi işaretler.

muldefler
Birden fazla tanımlamaya izin verir.

nocombreloc
Birden çok yer değiştirme bölümünün birleştirilmesini devre dışı bırakır.

nocopyreloc
Kopya yer değiştirmelerinin üretimini devre dışı bırakır.

nodefaultlib
Bu nesnenin bağımlılıklarının aranacağı nesneyi işaretler.
varsayılan kitaplık arama yolları.

düğüm noktası
Nesnenin çalışma zamanında boşaltılmaması gerektiğini belirtir.

nodlopen
"Dlopen" için uygun olmayan nesneyi işaretler.

nodump
Nesnenin "dldump" tarafından boşaltılamayacağını işaretler.

şimdi Yürütülebilir veya paylaşılan bir kitaplık oluştururken, dinamiklere anlatmak için işaretleyin.
program başlatıldığında veya paylaşıldığında tüm sembolleri çözmek için linker
kitaplık, işlev çağrısı çözünürlüğünü ertelemek yerine dlopen kullanmaya bağlıdır
fonksiyonun ilk çağrıldığı noktaya kadar.

köken
Nesnenin $ORIGIN içerebileceğini işaretler.

Solaris uyumluluğu için diğer anahtar kelimeler yok sayılır.

-( arşiv -)
--başlangıç ​​grubu arşiv --son grup
The arşiv arşiv dosyalarının bir listesi olmalıdır. Açık dosya olabilir
isimler veya -l seçenekleri.

Belirtilen arşivler, yeni tanımsız referans kalmayıncaya kadar tekrar tekrar aranır.
yaratıldı. Normalde, bir arşiv, belirtildiği sırayla yalnızca bir kez aranır.
komut satırında. Tanımlanmamış bir sorunu çözmek için o arşivdeki bir sembole ihtiyaç duyulursa
daha sonra komut satırında görünen bir arşivdeki bir nesne tarafından atıfta bulunulan sembol,
linker bu referansı çözemez. Arşivleri gruplayarak,
tüm olası referanslar çözülene kadar hepsi tekrar tekrar aranır.

Bu seçeneği kullanmanın önemli bir performans maliyeti vardır. Sadece ne zaman kullanmak en iyisidir
iki veya daha fazla arşiv arasında kaçınılmaz döngüsel referanslar var.

--kabul-unknown-input-arch
--no-kabul-unknown-input-arch
Bağlayıcıya, mimarisi tanınmayan girdi dosyalarını kabul etmesini söyler. NS
varsayım, kullanıcının ne yaptığını bildiği ve kasıtlı olarak bağlantı kurmak istediğidir.
bu bilinmeyen girdi dosyalarında. Bu, daha önce bağlayıcının varsayılan davranışıydı.
2.14'ü yayınlayın. 2.14 sürümünden itibaren varsayılan davranış, bu tür girdileri reddetmektir.
dosyalar ve böylece --kabul-unknown-input-arch eskisini geri yüklemek için seçenek eklendi
davranışı.

--ihyaç olduğu gibi
--hayır-gerektiğinde
Bu seçenek, komutta belirtilen dinamik kitaplıklar için ELF DT_NEEDED etiketlerini etkiler
satırdan sonra --ihyaç olduğu gibi seçenek. Normalde, bağlayıcı, aşağıdakiler için bir DT_NEEDED etiketi ekler:
kitaplığın olup olmadığına bakılmaksızın komut satırında belirtilen her dinamik kitaplık
aslında ihtiyaç var. --ihyaç olduğu gibi DT_NEEDED etiketlerinin yalnızca
tanımsız olan normal nesnelerden bazı sembol referanslarını karşılayan kütüphaneler
kütüphanenin bağlantılı olduğu noktada. --hayır-gerektiğinde varsayılanı geri yükler
davranışı.

--add-gerekli
--eklenmeye gerek yok
Bu seçenek, içindeki ELF DT_NEEDED etiketlerinden dinamik kitaplıkların işlenmesini etkiler.
sonra komut satırında belirtilen dinamik kitaplıklar --eklenmeye gerek yok seçeneği.
Normalde, bağlayıcı, DT_NEEDED'den gelen her dinamik kitaplık için bir DT_NEEDED etiketi ekler.
etiketleri. --eklenmeye gerek yok DT_NEEDED etiketlerinin bu kitaplıklar için asla yayınlanmamasına neden olur
DT_NEEDED etiketlerinden. --add-gerekli varsayılan davranışı geri yükler.

-iddia etmek Anahtar kelime
Bu seçenek SunOS uyumluluğu için yok sayılır.

-Bdinamik
-dy
-call_shared
Dinamik kitaplıklara karşı bağlantı. Bu, yalnızca paylaşılan platformlarda anlamlıdır.
kütüphaneler desteklenir. Bu seçenek normalde bu tür platformlarda varsayılandır. NS
bu seçeneğin farklı varyantları, çeşitli sistemlerle uyumluluk içindir. Yapabilirsin
bu seçeneği komut satırında birden çok kez kullanın: kitaplık aramasını etkiler
-l onu takip eden seçenekler.

-B grubu
Dinamik bölümdeki "DT_FLAGS_1" girişinde "DF_1_GROUP" bayrağını ayarlayın. Bu
çalışma zamanı bağlayıcısının bu nesnedeki aramaları işlemesine ve bağımlılıklarının
sadece grup içinde yapılır. --çözülmemiş-semboller=hepsini raporla ima edilir. Bu
seçeneği yalnızca paylaşılan kitaplıkları destekleyen ELF platformlarında anlamlıdır.

-Bstatik
-dn
-non_shared
-statik
Paylaşılan kitaplıklara karşı bağlantı vermeyin. Bu, yalnızca şu platformlarda anlamlıdır:
paylaşılan kitaplıklar desteklenir. Bu seçeneğin farklı varyantları
çeşitli sistemlerle uyumluluk. Bu seçeneği ekranda birden çok kez kullanabilirsiniz.
komut satırı: kitaplığın aranmasını etkiler -l onu takip eden seçenekler. Bu
seçeneği de ima eder --çözülmemiş-semboller=hepsini raporla.

-Bsembolik
Paylaşılan bir kitaplık oluştururken, genel sembollere yapılan referansları tanıma bağlayın
varsa, paylaşılan kitaplık içinde. Normalde, bağlantılı bir program için mümkündür
paylaşılan kitaplık içindeki tanımı geçersiz kılmak için paylaşılan bir kitaplığa karşı. Bu
seçeneği yalnızca paylaşılan kitaplıkları destekleyen ELF platformlarında anlamlıdır.

--kontrol bölümleri
--no-check-bölümleri
bağlayıcıya sorar değil bölüm adreslerini atandıktan sonra kontrol etmek için
herhangi bir örtüşme var. Normalde bağlayıcı bu kontrolü gerçekleştirir ve herhangi bir şey bulursa
çakışırsa, uygun hata mesajları üretecektir. Bağlayıcı bunu biliyor ve
bindirmelerdeki bölümler için ödenek yapar. Varsayılan davranış geri yüklenebilir
komut satırı anahtarını kullanarak --kontrol bölümleri.

--cref
Bir çapraz referans tablosu çıktısı alın. Bir bağlayıcı eşleme dosyası oluşturuluyorsa, çapraz
referans tablosu harita dosyasına yazdırılır. Aksi takdirde standart üzerine basılmıştır.
çıktı.

Tablonun formatı kasıtlı olarak basittir, böylece kolayca işlenebilir.
gerekirse bir komut dosyası. Semboller ada göre sıralanarak yazdırılır. Her bir sembol için,
dosya adlarının bir listesi verilir. Sembol tanımlanmışsa, listelenen ilk dosya,
tanımın yeri. Kalan dosyalar sembole referanslar içerir.

--no-tanımsız-ortak
Bu seçenek, adreslerin ortak sembollere atanmasını engeller. Senaryo
"INHIBIT_COMMON_ALLOCATION" komutu aynı etkiye sahiptir.

The --no-tanımsız-ortak seçenek, adres atama kararının ayrıştırılmasına izin verir.
Çıktı dosyası türü seçiminden ortak semboller; aksi takdirde Yeri Değiştirilemez
çıktı türü, adresleri Ortak sembollere atamaya zorlar. kullanma --no-tanımsız-ortak
paylaşılan bir kitaplıktan başvurulan Ortak sembollerin atanmasına izin verir
adresleri sadece ana programda. Bu, dosyadaki kullanılmayan yinelenen alanı ortadan kaldırır.
paylaşılan kütüphane ve ayrıca yanlış çözümleme konusunda olası karışıklığı önler
için özel arama yollarına sahip birçok dinamik modül olduğunda çoğaltın
çalışma zamanı sembolü çözünürlüğü.

--defsim sembol=ifade
tarafından verilen mutlak adresi içeren çıktı dosyasında genel bir sembol oluşturun.
ifade. Bu seçeneği birden çok kez tanımlamak için gerektiği kadar kullanabilirsiniz.
komut satırındaki semboller. için sınırlı bir aritmetik biçimi desteklenir.
ifade bu bağlamda: onaltılık bir sabit veya bir
veya onaltılık sabitleri eklemek veya çıkarmak için "+" ve "-" kullanın veya
semboller. Daha ayrıntılı ifadelere ihtiyacınız varsa, linker komutunu kullanmayı düşünün.
bir komut dosyasından dil. Not: arasında beyaz boşluk olmamalıdır. sembol,
eşittir işareti (``=''), ve ifade.

--demangle[=stil]
--bozulma yok
Bu seçenekler, hata mesajlarında ve diğer durumlarda sembol adlarının çözülüp çözülmeyeceğini kontrol eder.
çıktı. Bağlayıcıya demangle yapması söylendiğinde, sembol adlarını bir
okunabilir moda: nesne dosyası tarafından kullanılıyorlarsa baştaki alt çizgileri kaldırır
biçimlendirir ve C++ karışık sembol adlarını kullanıcı tarafından okunabilir adlara dönüştürür. Farklı
derleyicilerin farklı yönetme stilleri vardır. İsteğe bağlı sökme stili argümanı,
derleyiciniz için uygun bir demangling stili seçmek için kullanılabilir. bağlayıcı
ortam değişkeni olmadığı sürece varsayılan olarak demangle TOPLA_NO_DEMANGLE ayarlanır. Bunlar
varsayılanı geçersiz kılmak için seçenekler kullanılabilir.

--dinamik bağlayıcı dosya
Dinamik bağlayıcının adını ayarlayın. Bu sadece üretirken anlamlıdır
dinamik olarak bağlı ELF yürütülebilir dosyaları. Varsayılan dinamik bağlayıcı normalde doğrudur;
ne yaptığınızı bilmiyorsanız bunu kullanmayın.

--ölümcül-uyarılar
Tüm uyarıları hata olarak kabul edin.

--force-exe-soneki
Bir çıktı dosyasının bir .exe son ekine sahip olduğundan emin olun.

Başarıyla oluşturulmuş tam bağlantılı bir çıktı dosyasında ".exe" veya ".dll" yoksa
sonek, bu seçenek bağlayıcıyı çıktı dosyasını aynı ada sahip birine kopyalamaya zorlar.
".exe" son eki ile. Bu seçenek, değiştirilmemiş Unix makefile'lerini bir bilgisayarda kullanırken kullanışlıdır.
Microsoft Windows ana bilgisayarı, çünkü Windows'un bazı sürümleri, bir görüntüyü çalıştırmadıkça
".exe" son ekiyle biter.

--no-gc-bölümleri
--gc bölümleri
Kullanılmayan giriş bölümlerinin çöp toplamasını etkinleştirin. Bunu yapan hedeflerde yoksayılır.
bu seçeneği desteklemiyor. Bu seçenek ile uyumlu değil -r. Varsayılan davranış
(bu çöp toplama işleminin yapılmaması) belirtilerek geri yüklenebilir
--no-gc-bölümleri komut satırında.

--yardım et
Standart çıktıda komut satırı seçeneklerinin bir özetini yazdırın ve çıkın.

--hedef-yardım
Standart çıktıya tüm hedefe özel seçeneklerin bir özetini yazdırın ve çıkın.

-Harita harita dosyası
Dosyaya bir bağlantı haritası yazdırın harita dosyası. açıklamasına bakın -M seçeneği, yukarıda.

--hayır-bellek-bellek
ld sembol tablolarını önbelleğe alarak normal olarak bellek kullanımı üzerindeki hızı optimize eder.
dosyaları belleğe girin. Bu seçenek söyler ld bunun yerine bellek kullanımı için optimize etmek için
sembol tablolarını gerektiği gibi yeniden okumak. Bu, eğer gerekli olabilir ld dışına kaçmak
büyük bir yürütülebilir dosyayı bağlarken bellek alanı.

--no-tanımsız
-z defs
Normal nesne dosyalarından çözülmemiş sembol referanslarını bildirin. Bu yapılırsa bile
bağlayıcı, sembolik olmayan bir paylaşılan kitaplık oluşturuyor. Anahtar
--[no-]allow-shlib-tanımsız çözülmemiş raporlama davranışını kontrol eder
Bağlantılı paylaşılan kitaplıklarda bulunan referanslar.

--izin-çoklu-tanım
-z muldefler
Normalde bir sembol birden çok kez tanımlandığında, bağlayıcı ölümcül bir rapor verir.
hata. Bu seçenekler birden fazla tanımlamaya izin verir ve ilk tanım kullanılır.

--allow-shlib-tanımsız
--no-allow-shlib-tanımsız
Paylaşılan kitaplıklarda tanımsız sembollere izin verir (varsayılan) veya izin vermez. bu anahtar
benzer --no-tanımsız davranışı belirlemesinin dışında,
tanımsız semboller, normal bir nesne dosyası yerine paylaşılan bir kitaplıkta bulunur. yapar
normal nesne dosyalarındaki tanımsız sembollerin nasıl işlendiğini etkilemez.

Bu yüzden --allow-shlib-tanımsız varsayılan, paylaşılan kitaplığın
bağlantı zamanında belirtilmesi, yükte mevcut olanla aynı olmayabilir
zaman, bu nedenle semboller aslında yükleme zamanında çözülebilir olabilir. artı bazıları var
paylaşılan kütüphanelerdeki tanımsız sembollerin normal olduğu sistemler (örn. BeOS). (çekirdek
mevcut için hangi işlevin en uygun olduğunu seçmek için yükleme zamanında bunları yamalar
mimari. Bu, örneğin uygun bir memset'i dinamik olarak seçmek için kullanılır.
işlev). Görünüşe göre HPPA paylaşılan kitaplıklarının tanımsız olması da normaldir.
semboller.

--no-tanımsız-sürüm
Normalde bir sembolün tanımsız bir versiyonu olduğunda, bağlayıcı onu görmezden gelir. Bu
seçenek, tanımsız sürüme sahip sembollere izin vermez ve önemli bir hata verilir
yerine.

--default-symver
Versiyonsuz dışa aktarılan semboller için varsayılan bir sembol versiyonu (soneme) oluşturun ve kullanın.

--default-imported-symver
Sürüm değiştirilmemiş içe aktarılan semboller için varsayılan bir sembol sürümü (soneme) oluşturun ve kullanın.

--no-uyarı-uyumsuzluğu
Normalde ld olan girdi dosyalarını birbirine bağlamaya çalışırsanız bir hata verecektir.
bir nedenden dolayı uyumsuz, belki de farklı amaçlar için derlendikleri için
işlemciler veya farklı endianness'ler için. Bu seçenek söyler ld gerektiğini
sessizce bu tür olası hatalara izin verin. Bu seçenek yalnızca dikkatli kullanılmalıdır,
bağlayıcı hatalarının olmasını sağlayan bazı özel eylemler gerçekleştirdiğiniz durumlar
uygunsuz.

--no-tüm-arşiv
efektini kapat --bütün arşiv sonraki arşiv dosyaları için seçenek.

--noinhibit-exec
Yürütülebilir çıktı dosyasını hala kullanılabilir olduğunda saklayın. Normalde, bağlayıcı
bağlantı işlemi sırasında hatalarla karşılaşırsa bir çıktı dosyası üretmeyecektir; o
herhangi bir hata verdiğinde çıktı dosyası yazmadan çıkar.

-nstdlib
Yalnızca komut satırında açıkça belirtilen kitaplık dizinlerini arayın. Kütüphane
bağlayıcı komut dosyalarında belirtilen dizinler (bağlayıcı komut dosyalarında belirtilen bağlayıcı komut dosyaları dahil)
komut satırı) yoksayılır.

--oformat çıkış formatı
ld birden fazla nesne dosyasını destekleyecek şekilde yapılandırılabilir. Eğer senin ld is
bu şekilde yapılandırılmış, kullanabilirsiniz --oformat için ikili formatı belirleme seçeneği
çıktı nesnesi dosyası. Hatta ld alternatif nesneyi desteklemek için yapılandırıldı
biçimlerde, genellikle bunu belirtmeniz gerekmez, çünkü ld üretecek şekilde yapılandırılmalıdır.
varsayılan çıktı biçimi olarak, her makinedeki en olağan biçimdir. çıkış formatı bir
metin dizesi, BFD kitaplıkları tarafından desteklenen belirli bir biçimin adı. (Yapabilirsiniz
mevcut ikili formatları listeleyin objdump -i.) Komut dosyası komutu
"OUTPUT_FORMAT" çıktı biçimini de belirleyebilir, ancak bu seçenek onu geçersiz kılar.

-turta
--pic-executable
Bir konumdan bağımsız yürütülebilir dosya oluşturun. Bu, şu anda yalnızca ELF'de desteklenmektedir
platformlar. Konumdan bağımsız yürütülebilir dosyalar, bu konuda paylaşılan kitaplıklara benzer.
dinamik bağlayıcı tarafından işletim sisteminin seçtiği sanal adrese taşınırlar.
(çağrılar arasında değişebilir). Normal dinamik olarak bağlantılı yürütülebilir dosyalar gibi
yürütülebilirler ve yürütülebilir dosyada tanımlanan semboller tarafından geçersiz kılınamazlar.
paylaşılan kütüphaneler

-qbüyü
Bu seçenek Linux uyumluluğu için yoksayılır.

-Qy Bu seçenek, SVR4 uyumluluğu için yok sayılır.

--rahatlamak
Makineye bağlı etkileri olan bir seçenek. Bu seçenek yalnızca birkaç
hedefler.

Bazı platformlarda, --rahatlamak seçeneği haline gelen global optimizasyonları gerçekleştirir.
bağlayıcı, rahatlatıcı adres gibi programdaki adreslemeyi çözdüğünde mümkündür
modları ve çıktı nesne dosyasında yeni talimatları sentezleme.

Bazı platformlarda bu bağlantı zamanı global optimizasyonları, sembolik hata ayıklama yapabilir.
ortaya çıkan yürütülebilir dosya imkansız. Bunun Matsushita için geçerli olduğu bilinmektedir.
MN10200 ve MN10300 işlemci ailesi.

Bunun desteklenmediği platformlarda, --rahatlamak kabul edilir ama görmezden gelinir.

--retain-symbols-dosyası Dosya
tutmak bir tek dosyada listelenen semboller Dosya, diğerlerini atarak. Dosya
her satırda bir sembol adı olan düz bir dosyadır. Bu seçenek özellikle
büyük bir global sembol tablosunun bulunduğu ortamlarda (VxWorks gibi) kullanışlıdır.
çalışma zamanı belleğini korumak için kademeli olarak toplanır.

--retain-symbols-dosyası yok değil tanımlanmamış sembolleri veya bunun için gerekli sembolleri atın
yer değiştirmeler.

sadece belirtebilirsiniz --retain-symbols-dosyası komut satırında bir kez. geçersiz kılar -s
ve -S.

-rpath dir
Çalışma zamanı kitaplığı arama yoluna bir dizin ekleyin. Bu, bir ELF'yi bağlarken kullanılır
paylaşılan nesnelerle yürütülebilir. Tüm -rpath argümanlar birleştirilir ve iletilir
bunları çalışma zamanında paylaşılan nesneleri bulmak için kullanan çalışma zamanı bağlayıcısı. NS -rpath
seçeneği, paylaşılan nesneler tarafından ihtiyaç duyulan paylaşılan nesneleri bulurken de kullanılır.
bağlantıya açıkça dahil edilmiştir; açıklamasına bakın -rpath-bağlantısı seçenek. Eğer
-rpath bir ELF yürütülebilir dosyası bağlanırken kullanılmaz, ortamın içeriği
"LD_RUN_PATH" değişkeni tanımlanmışsa kullanılacaktır.

The -rpath seçeneği SunOS'ta da kullanılabilir. Varsayılan olarak, SunOS'ta bağlayıcı
hepsinden bir çalışma zamanı arama yaması oluşturun -L verdiği seçeneklerdir. Eğer bir -rpath seçenek
kullanıldığında, çalışma zamanı arama yolu yalnızca -rpath seçenekleri,
görmezden gelmek -L seçenekler. Bu, birçok ekleyen gcc kullanırken yararlı olabilir. -L
NFS'ye bağlı dosya sistemlerinde olabilecek seçenekler.

Diğer ELF bağlayıcıları ile uyumluluk için, eğer -R seçeneği bir dizin takip eder
dosya adı yerine dosya adı olarak kabul edilir. -rpath seçeneği.

-rpath-bağlantısı DIR
ELF veya SunOS kullanırken, paylaşılan bir kitaplık başka bir kitaplık gerektirebilir. Bu, bir
"ld -shared" bağlantısı, girdi dosyalarından biri olarak paylaşılan bir kitaplık içerir.

Bağlayıcı, paylaşılmayan, yeri değiştirilemez bir işlem yaparken böyle bir bağımlılıkla karşılaştığında
bağlantı, gerekli paylaşılan kitaplığı otomatik olarak bulmaya çalışacak ve onu dahil edecektir.
açık bir şekilde dahil edilmemişse, bağlantıda. Böyle bir durumda, -rpath-bağlantısı seçenek
aranacak ilk dizin kümesini belirtir. NS -rpath-bağlantısı seçenek belirtebilir
ile ayrılmış bir ad listesi belirterek bir dizin adları dizisi
iki nokta üst üste veya birden çok kez görünerek.

Bu seçenek, olası arama yolunu geçersiz kıldığı için dikkatli kullanılmalıdır.
paylaşılan bir kitaplıkta zor derlenmiştir. Böyle bir durumda kullanmak mümkündür
istemeden, çalışma zamanı bağlayıcısının yapacağından farklı bir arama yolu.

Bağlayıcı, gerekli paylaşılan kitaplıkları bulmak için aşağıdaki arama yollarını kullanır.

1. tarafından belirtilen herhangi bir dizin -rpath-bağlantısı seçenekleri.

2. tarafından belirtilen herhangi bir dizin -rpath seçenekler. Arasındaki fark -rpath ve
-rpath-bağlantısı tarafından belirtilen dizinler -rpath seçeneklere dahildir
yürütülebilir ve çalışma zamanında kullanılır, oysa -rpath-bağlantısı seçenek sadece etkilidir
bağlantı zamanında. Yalnızca yerel bağlayıcı içindir.

3. Bir ELF sisteminde, eğer -rpath ve "rpath-link" seçenekleri kullanılmadı,
"LD_RUN_PATH" ortam değişkeninin içeriği. Yerel bağlayıcı içindir
bir tek.

4. SunOS'ta, eğer -rpath seçenek kullanılmadı, belirtilen dizinleri arayın
kullanma -L seçenekleri.

5. Yerel bir bağlayıcı için, "LD_LIBRARY_PATH" ortam değişkeninin içeriği.

6. Yerel bir ELF bağlayıcısı için, paylaşılan bir dosyanın "DT_RUNPATH" veya "DT_RPATH" içindeki dizinleri
kütüphane, ihtiyaç duyduğu paylaşılan kütüphaneler için aranır. "DT_RPATH" girişleri
"DT_RUNPATH" girişleri varsa yoksayılır.

7. Normalde varsayılan dizinler / lib ve / USR / lib.

8. Bir ELF sistemindeki yerel bir bağlayıcı için, eğer dosya /etc/ld.so.conf var, liste
Bu dosyada bulunan dizinler.

Gerekli paylaşılan kitaplık bulunamazsa, bağlayıcı bir uyarı verir ve
bağlantı ile devam edin.

-paylaşılan
-Bpaylaşılabilir
Paylaşılan bir kitaplık oluşturun. Bu, şu anda yalnızca ELF, XCOFF ve SunOS'ta desteklenmektedir.
platformlar. SunOS'ta, bağlayıcı, aşağıdaki durumlarda otomatik olarak paylaşılan bir kitaplık oluşturacaktır. -e
seçeneği kullanılmamaktadır ve linkte tanımsız semboller bulunmaktadır.

--sıralama-ortak
Bu seçenek söyler ld ortak sembolleri, onları yerleştirirken boyuta göre sıralamak için
uygun çıkış bölümleri. Önce bir baytlık simgelerin tümü, ardından ikisinin tümü
bayt, ardından dört baytın tümü ve ardından diğer her şey. Bu boşlukları önlemek için
hizalama kısıtlamaları nedeniyle semboller arasında.

--sıralama bölümü isim
Bu seçenek, "SORT_BY_NAME" ifadesini bağlayıcıdaki tüm joker karakter bölümü kalıplarına uygular
komut.

--sıralama bölümü hiza
Bu seçenek, "SORT_BY_ALIGNMENT" ifadesini, dizindeki tüm joker karakter bölümü kalıplarına uygular.
bağlayıcı komut dosyası

--dosyaya göre bölme [boyut]
Benzer --bölünerek yer değiştirme ancak her girdi dosyası için yeni bir çıktı bölümü oluşturur.
boyut ulaşıldı. boyut verilmezse varsayılan olarak 1 boyutundadır.

--bölünerek yer değiştirme [saymak]
Çıktı dosyasında tek bir çıktı bölümü olmaması için ekstra bölümler oluşturmaya çalışır.
dosya daha fazlasını içeriyor saymak yer değiştirmeler. Bu, büyük oluştururken kullanışlıdır
COFF nesnesiyle belirli gerçek zamanlı çekirdeklere indirmek için yeniden konumlandırılabilir dosyalar
dosya formatı; COFF, tek bir yerde 65535'ten fazla yer değiştirmeyi temsil edemediğinden
Bölüm. Bunun, çalışmayan nesne dosya biçimleriyle çalışmayacağını unutmayın.
keyfi bölümleri destekler. Bağlayıcı, bireysel giriş bölümlerini bölmez
yeniden dağıtım için, yani tek bir giriş bölümü birden fazla içeriyorsa saymak tehcir
bir çıktı bölümü bu kadar çok yer değiştirmeyi içerecektir. saymak bir değere varsayılan
32768

--stats
Yürütme gibi bağlayıcının çalışmasıyla ilgili istatistikleri hesaplayın ve görüntüleyin
zaman ve bellek kullanımı.

--sysroot=rehber
kullanım rehber sysroot'un konumu olarak, yapılandırma zamanı varsayılanını geçersiz kılar.
Bu seçenek yalnızca aşağıdakiler kullanılarak yapılandırılan bağlayıcılar tarafından desteklenir: --sysroot ile.

--geleneksel-format
Bazı hedefler için çıktı ld bazı yönlerden bazılarının çıktısından farklıdır
mevcut bağlayıcı Bu anahtar istekleri ld bunun yerine geleneksel biçimi kullanmak için.

Örneğin, SunOS'ta, ld sembol dizesi tablosundaki yinelenen girişleri birleştirir. Bu
tam hata ayıklama bilgisine sahip bir çıktı dosyasının boyutunu 30'dan fazla azaltabilir
yüzde. Ne yazık ki, SunOS "dbx" programı ortaya çıkan programı okuyamıyor
("gdb"de sorun yok). NS --geleneksel-format anahtar söyler ld birleştirmemek
yinelenen girişler

--bölüm-başlangıç Bölüm adı=org
Tarafından verilen mutlak adreste çıktı dosyasında bir bölüm bulun org. Kullanabilirsin
bu seçenek, komutta birden çok bölümü bulmak için gerektiği kadar
hattı. org tek bir onaltılık tam sayı olmalıdır; diğer bağlayıcılarla uyumluluk için,
önde gelenleri atlayabilirsiniz 0x genellikle onaltılık değerlerle ilişkilendirilir. Not: Orada
arasında boşluk olmamalı Bölüm adı, eşittir işareti (``=''), ve org.

-Tbss org
-Tveri org
-Ttext org
--section-start ile aynı, ".bss", ".data" veya ".text" ile Bölüm adı.

--çözülmemiş-semboller=yöntem
Çözümlenmemiş sembollerin nasıl ele alınacağını belirleyin. için dört olası değer vardır.
yöntem:

hepsini Yoksay
Çözülmemiş sembolleri bildirmeyin.

hepsini rapor et
Çözülmemiş tüm sembolleri bildirin. Bu varsayılandır.

nesne-içinde-dosyaları yoksay
Paylaşılan kitaplıklarda bulunan çözümlenmemiş sembolleri bildirin, ancak bunları yoksayın
normal nesne dosyalarından geliyorlarsa.

paylaşılan kütüphaneleri yoksay
Normal nesne dosyalarından gelen çözümlenmemiş sembolleri bildirin, ancak
paylaşılan kitaplıklardan gelirler. Bu, bir dinamik oluştururken yararlı olabilir.
ikili ve referans olması gereken tüm paylaşılan kitaplıkların olduğu bilinmektedir.
bağlayıcının komut satırına dahil edilir.

Paylaşılan kitaplıkların davranışı kendi başlarına da kontrol edilebilir.
--[no-]allow-shlib-tanımsız seçeneği.

Normalde bağlayıcı, rapor edilen her çözülmemiş sembol için bir hata mesajı oluşturur.
ama seçenek --warn-çözülmemiş-semboller bunu bir uyarı olarak değiştirebilir.

--dll-ayrıntılı
--ayrıntılı
için sürüm numarasını görüntüleyin ld ve desteklenen bağlayıcı öykünmelerini listeleyin. Görüntülemek
hangi girdi dosyalarının açılabileceği ve açılamayacağı. Tarafından kullanılan bağlayıcı komut dosyasını görüntüleyin
bağlayıcı.

--version-script=sürüm-komut dosyası
Bağlayıcıya bir sürüm komut dosyasının adını belirtin. Bu genellikle şu durumlarda kullanılır:
sürüm hakkında ek bilgi belirtmek için paylaşılan kitaplıklar oluşturma
oluşturulan kitaplık için hiyerarşi. Bu seçenek yalnızca ELF'de anlamlıdır
paylaşılan kütüphaneleri destekleyen platformlar.

--uyarı-ortak
Ortak bir sembol başka bir ortak sembolle veya bir sembolle birleştirildiğinde uyar
tanım. Unix bağlayıcıları bu biraz özensiz uygulamaya izin verir, ancak bazılarında bağlayıcılar
diğer işletim sistemleri yoktur. Bu seçenek, olası sorunları bulmanızı sağlar.
küresel sembolleri birleştirmekten Ne yazık ki, bazı C kitaplıkları bu uygulamayı kullanır, bu nedenle
Programlarınızda olduğu gibi kütüphanelerde de sembollerle ilgili bazı uyarılar alabilirsiniz.

Burada C örnekleriyle gösterilen üç tür global sembol vardır:

int i = 1;
Çıktı dosyasının başlatılmış veri bölümüne giren bir tanım.

stajyer doktor int i;
Boşluk ayırmayan tanımsız bir başvuru. ya bir olmalı
bir yerde değişken için tanım veya ortak bir sembol.

int i;
Ortak bir sembol. Bir değişken için yalnızca (bir veya daha fazla) ortak sembol varsa,
çıktı dosyasının başlatılmamış veri alanına gider. bağlayıcı birleşir
aynı değişken için birden çok ortak sembolü tek bir sembole dönüştürür. Eğer öylelerse
farklı boyutlarda, en büyük boyutu seçer. Bağlayıcı ortak bir sembolü döndürür
aynı değişkenin bir tanımı varsa, bir bildirime dönüştürülür.

The --uyarı-ortak seçeneği beş çeşit uyarı üretebilir. Her uyarı şunlardan oluşur:
bir çift satır: ilki az önce karşılaşılan sembolü tanımlar ve ikincisi
aynı adla karşılaşılan önceki sembolü tanımlar. İkisinden biri veya ikisi
semboller ortak bir sembol olacaktır.

1. Ortak bir sembolü referansa dönüştürmek, çünkü zaten bir tanım var
sembolü için.

( ): uyarı: ortak ` '
tanım gereği geçersiz kılındı
( ): uyarı: burada tanımlanmıştır

2. Ortak bir sembolü referansa dönüştürmek, çünkü daha sonraki bir tanım için
sembolü ile karşılaşılır. Bu, önceki durumla aynıdır, ancak
sembollerle farklı bir sırada karşılaşılır.

( ): uyarı: ` tanımı '
yaygın
( ): uyarı: ortak burada

3. Ortak bir sembolün önceki aynı boyuttaki ortak sembolle birleştirilmesi.

( ): uyarı: çoklu ortak
` '
( ): uyarı: önceki ortak burada

4. Ortak bir sembolü daha önceki daha büyük bir ortak sembolle birleştirme.

( ): uyarı: ortak ` '
daha büyük ortak tarafından geçersiz kılındı
( ): uyarı: daha büyük ortak burada

5. Ortak bir sembolü önceki daha küçük bir ortak sembolle birleştirme. Bu aynısı
önceki durumda olduğu gibi, sembollerin farklı bir şekilde karşılaşılması dışında
sipariş.

( ): uyarı: ortak ` '
daha küçük ortak geçersiz kılma
( ): uyarı: daha küçük ortak burada

--warn-yapıcılar
Herhangi bir global kurucu kullanılıyorsa uyar. Bu sadece birkaç nesne dosyası için kullanışlıdır.
biçimler. COFF veya ELF gibi formatlar için, bağlayıcı global kullanımını algılayamaz.
yapıcılar.

--uyar-çoklu-gp
Çıktı dosyasında birden çok global işaretçi değeri gerekiyorsa uyar. Bu sadece
Alpha gibi belirli işlemciler için anlamlıdır. Özellikle, bazı işlemciler
büyük değerli sabitleri özel bir bölüme koyun. Özel bir kayıt (küresel
pointer) sabitlerin yüklenebilmesi için bu bölümün ortasına işaret eder.
bir temel kayıt göreli adresleme modu aracılığıyla verimli bir şekilde. Tabandaki ofsetten beri-
göreli kayıt modu sabittir ve nispeten küçüktür (örneğin, 16 bit), bu
sabit havuzun maksimum boyutu. Bu nedenle, büyük programlarda, genellikle
olası tüm noktaları ele alabilmek için birden çok global işaretçi değeri kullanın
sabitler. Bu seçenek, bu durum oluştuğunda bir uyarı verilmesine neden olur.

--uyarı-bir kez
Her bir tanımsız sembol için yalnızca bir kez uyar;
bunu.

--warn-section-align
Hizalama nedeniyle bir çıkış bölümünün adresi değiştirilirse uyar. Tipik,
hizalama bir giriş bölümü tarafından ayarlanacaktır. Adres sadece eğer değiştirilirse
açıkça belirtilmemiş; yani, "SECTIONS" komutu bir başlangıç ​​belirtmiyorsa
bölümün adresi.

--warn-paylaşılan-textrel
Bağlayıcı, paylaşılan bir nesneye bir DT_TEXTREL eklerse uyar.

--warn-çözülmemiş-semboller
Bağlayıcı çözülmemiş bir sembolü rapor edecekse (seçenek
--çözülmemiş-semboller) normalde bir hata üretecektir. Bu seçenek onu yapar
bunun yerine bir uyarı oluşturun.

--hata-çözülmemiş-semboller
Bu, rapor verirken bağlayıcının varsayılan hata oluşturma davranışını geri yükler.
çözülmemiş semboller

--bütün arşiv
Komut satırında belirtilen her arşiv için --bütün arşiv seçeneği
arama yapmak yerine, arşivdeki her nesne dosyasını bağlantıya dahil edin.
gerekli nesne dosyaları için arşiv. Bu normalde bir arşiv dosyasını açmak için kullanılır.
paylaşılan bir kütüphaneye, her nesneyi sonuçtaki paylaşılana dahil edilmeye zorlar.
kütüphane. Bu seçenek birden fazla kullanılabilir.

Bu seçeneği gcc'den kullanırken iki not: Birincisi, gcc bu seçeneği bilmiyor,
yani kullanmak zorundasın -Wl,-bütün-arşiv. İkincisi, kullanmayı unutma
-Wl,-bütün-arşiv yok arşiv listenizden sonra, çünkü gcc kendi listesini ekleyecektir.
bağlantınıza arşivler ve bu bayrağın bunları da etkilemesini istemeyebilirsiniz.

--dürüm sembol
için bir sarmalayıcı işlevi kullanın sembol. Herhangi bir tanımsız referans sembol çözülecek
sarmak için_sembol". "__real_ için herhangi bir tanımsız referanssembol" çözülecek
sembol.

Bu, bir sistem işlevi için bir sarmalayıcı sağlamak için kullanılabilir. sarma işlevi
"__wrap_" olarak adlandırılmalıdırsembol". Sistem işlevini çağırmak isterse,
"__gerçek_" arasembol".

İşte önemsiz bir örnek:

geçersiz *
__wrap_malloc (size_t c)
{
printf ("malloc %zu\n ile çağrılır", c);
__real_malloc (c) döndür;
}

Kullanarak bu dosyaya başka bir kod bağlarsanız --dürüm malloc, ardından tüm "malloc" çağrıları
bunun yerine "__wrap_malloc" işlevini çağırır. içinde "__real_malloc" çağrısı
"__wrap_malloc", gerçek "malloc" işlevini çağırır.

Bir "__real_malloc" işlevi de sağlamak isteyebilirsiniz, böylece
--dürüm seçenek başarılı olacaktır. Bunu yaparsanız, tanımını koymamalısınız.
"__real_malloc", "__wrap_malloc" ile aynı dosyada; yaparsanız, montajcı
çağrıyı, bağlayıcının "malloc" a sarma şansı olmadan önce çözün.

--enable-new-dtags
--disable-new-dtags
Bu bağlayıcı, ELF'de yeni dinamik etiketleri oluşturabilir. Ancak eski ELF sistemleri
onları anla. belirtirseniz --enable-new-dtags, dinamik etiketler oluşturulacak
ihyaç olduğu gibi. belirtirseniz --disable-new-dtags, yeni dinamik etiketler oluşturulmaz.
Varsayılan olarak, yeni dinamik etiketler oluşturulmaz. Bu seçeneklerin yalnızca
ELF sistemleri için kullanılabilir.

--hash-boyutu=numara
Bağlayıcının karma tablolarının varsayılan boyutunu şuna yakın bir asal sayıya ayarlayın. numara.
Bu değeri artırmak, bağlayıcının görevini gerçekleştirmesi için geçen süreyi azaltabilir.
görevler, bağlayıcının bellek gereksinimlerini artırma pahasına. benzer şekilde
bu değeri azaltmak, hız pahasına bellek gereksinimlerini azaltabilir.

--reduce-bellek-yükleri
Bu seçenek, bağlantı pahasına ld çalışma zamanında bellek gereksinimlerini azaltır
hız. Bu, bağlantı haritası dosyası için eski O(n^2) algoritmasını seçmek için tanıtıldı
için yaklaşık %40 daha fazla bellek kullanan yeni O(n) algoritması yerine
sembol depolama

Anahtarın bir başka etkisi, varsayılan karma tablo boyutunu 1021 olarak ayarlamaktır;
yine, bağlayıcının çalışma süresini uzatma pahasına bellekten tasarruf sağlar. Bu tamamlanmamış
ancak eğer --karma boyutu anahtarı kullanılmıştır.

The --reduce-bellek-yükleri anahtarı, diğer değiş tokuşları etkinleştirmek için de kullanılabilir.
bağlayıcının gelecekteki sürümleri.

i386 PE bağlayıcı, aşağıdakileri destekler: -paylaşılan çıktının bir olmasına neden olan seçenek
normal bir yürütülebilir dosya yerine dinamik olarak bağlantılı kitaplık (DLL). adını vermelisin
Bu seçeneği kullandığınızda "*.dll" çıktısını alın. Ek olarak, bağlayıcı tamamen destekler
bağlayıcı komut satırında bir nesne gibi belirtilebilen standart "*.def" dosyaları
dosya (aslında, sembollerini dışa aktardığı arşivlerden önce gelmelidir)
bağlı, tıpkı normal bir nesne dosyası gibi).

Tüm hedefler için ortak olan seçeneklere ek olarak, i386 PE bağlayıcı, ek
i386 PE hedefine özel komut satırı seçenekleri. Değer alan seçenekler
değerlerinden bir boşluk veya eşittir işaretiyle ayrılabilir.

--add-stdcall-alias
Belirtilmişse, stdcall son ekine sahip semboller (@nn) olduğu gibi ve ayrıca
eki kaldırıldı. [Bu seçenek, bağlayıcının i386 PE hedefli bağlantı noktasına özeldir]

--base-dosyası dosya
kullanım dosya tüm temel adreslerin kaydedileceği bir dosyanın adı olarak
DLL'ler oluşturmak için gereken yer değiştirmeler dll aracı. [Bu bir i386 PE'ye özgüdür
seçenek]

--dll
Normal bir yürütülebilir dosya yerine bir DLL oluşturun. Ayrıca kullanabilirsiniz -paylaşılan veya bir belirtin
Belirli bir ".def" dosyasındaki "KÜTÜPHANE". [Bu seçenek, hedeflenen i386 PE'ye özeldir.
bağlayıcı bağlantı noktası]

--enable-stdcall-düzeltme
--disable-stdcall-düzeltme
Bağlantı çözemediği bir sembol bulursa, "bulanık" yapmaya çalışacaktır.
yalnızca biçiminde farklılık gösteren başka bir tanımlanmış sembol arayarak
sembol adı (cdecl vs stdcall) ve eşleşmeye bağlanarak bu sembolü çözecektir.
Örneğin, tanımsız "_foo" sembolü, "_foo@12" işlevine bağlanabilir veya
tanımsız "_bar@16" sembolü, "_bar" işleviyle bağlantılı olabilir. Ne zaman
linker bunu yaparsa, normalde bağlanmaması gerektiği için bir uyarı yazdırır,
ancak bazen üçüncü taraf dll'lerden oluşturulan içe aktarma kitaplıklarının bu özelliğe ihtiyacı olabilir
kullanılabilir olması. belirtirseniz --enable-stdcall-düzeltme, bu özellik tamamen etkin
ve uyarılar yazdırılmaz. belirtirseniz --disable-stdcall-düzeltme, bu özellik
devre dışı bırakılır ve bu tür uyumsuzluklar hata olarak kabul edilir. [Bu seçenek şunlara özeldir:
bağlayıcının i386 PE hedeflenen bağlantı noktası]

--tüm sembolleri dışa aktar
Verilirse, bir DLL oluşturmak için kullanılan nesnelerdeki tüm genel semboller tarafından dışa aktarılır.
DLL'yi seçin. Aksi takdirde dışa aktarılmayacaksa bunun varsayılan olduğunu unutmayın.
semboller. Semboller, DEF dosyaları aracılığıyla açıkça dışa aktarıldığında veya dolaylı olarak dışa aktarıldığında
işlev öznitelikleri aracılığıyla, varsayılan, bu seçenek olmadıkça başka hiçbir şeyi dışa aktarmamaktır.
verilmiş. "DllMain@12", "DllEntryPoint@0" sembollerinin,
"DllMainCRRTStartup@12" ve "impure_ptr" otomatik olarak dışa aktarılmayacaktır. Ayrıca,
diğer DLL'lerden içe aktarılan semboller yeniden dışa aktarılmayacağı gibi,
DLL'nin "_head_" ile başlayan veya ile bitenler gibi dahili düzeni
"_iname". Ayrıca, "libgcc", "libstd++", "libmingw32" veya
"crtX.o" dışa aktarılacaktır. Adları "__rtti_" veya "__builtin_" ile başlayan semboller
C++ DLL'lerine yardımcı olmak için dışa aktarılmayacaktır. Son olarak, kapsamlı bir liste var
Dışa aktarılmayan cygwin-özel sembolleri (belli ki, bu
cygwin hedefleri için DLL'ler). Bu cygwin hariç tutulanlar şunlardır: "_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" ve "çevre". [Bu seçenek, hedeflenen i386 PE'ye özeldir.
bağlayıcı bağlantı noktası]

--hariç tutma-semboller sembol,sembol, ...
Otomatik olarak dışa aktarılmaması gereken bir sembol listesi belirtir. Sembol
isimler virgül veya iki nokta üst üste ile sınırlandırılabilir. [Bu seçenek i386 PE'ye özeldir
bağlayıcının hedeflenen bağlantı noktası]

--dosya hizalama
Dosya hizalamasını belirtin. Dosyadaki bölümler her zaman dosya ofsetlerinde başlar
bu sayının katları olan Bu, varsayılan olarak 512'dir. [Bu seçenek özeldir
bağlayıcının i386 PE hedefli bağlantı noktasına]

--yığın rezerv
--yığın rezerv,işlemek
için yığın olarak kullanılmak üzere ayrılacak (ve isteğe bağlı olarak taahhüt edilecek) bellek miktarını belirtin.
bu program. Varsayılan 1Mb ayrılmış, 4K taahhüt edilmiş. [Bu seçenek şunlara özeldir:
bağlayıcının i386 PE hedeflenen bağlantı noktası]

--image-base değer
kullanım değer programınızın veya dll'nizin temel adresi olarak. Bu en düşük bellek
programınız veya dll yüklendiğinde kullanılacak konum. ihtiyacını azaltmak için
dll'lerinizin yerini değiştirin ve performansını artırın, her birinin benzersiz bir temel adresi olmalıdır
ve diğer dll'lerle örtüşmez. Yürütülebilir dosyalar için varsayılan 0x400000'dir ve
0x10000000 dll'ler için. [Bu seçenek, cihazın i386 PE hedefli bağlantı noktasına özeldir.
bağlayıcı]

--öldürme
Verilmişse, stdcall son eki (@nn) kullanılmadan önce sembollerden çıkarılacaktır.
ihraç edildi. [Bu seçenek, bağlayıcının i386 PE hedefli bağlantı noktasına özeldir]

--büyük-adres-farkında
Eğer verilirse, COFF başlığının ``Charateristics'' alanındaki uygun bit
bu yürütülebilir dosyanın 2'den büyük sanal adresleri desteklediğini gösterecek şekilde ayarlanmış
gigabayt. Bu, /3GB veya /USERVA= ile birlikte kullanılmalıdır.değer megabayt
BOOT.INI'nin ``[işletim sistemleri]'' bölümüne geçin. Aksi takdirde, bu bit
etkisi yoktur. [Bu seçenek, bağlayıcının PE hedefli bağlantı noktalarına özeldir]

--major-image-sürüm değer
“Görüntü sürümünün” ana numarasını ayarlar. Varsayılan 1'dir. [Bu seçenek
bağlayıcının i386 PE hedefli bağlantı noktasına özel]

--major-os-versiyonu değer
`` işletim sistemi sürümünün '' ana numarasını ayarlar. Varsayılan 4'tür. [Bu seçenek özeldir.
bağlayıcının i386 PE hedefli bağlantı noktasına]

--ana-alt-sistem-sürüm değer
``Alt sistem versiyonu''nun ana numarasını ayarlar. Varsayılan 4'tür. [Bu seçenek
bağlayıcının i386 PE hedefli bağlantı noktasına özel]

--minor-image-sürüm değer
``görüntü sürümünün'' küçük numarasını ayarlar. Varsayılan 0'dır. [Bu seçenek
bağlayıcının i386 PE hedefli bağlantı noktasına özel]

--minor-os-versiyonu değer
``OS sürümünün'' küçük numarasını ayarlar. Varsayılan 0'dır. [Bu seçenek özeldir
bağlayıcının i386 PE hedefli bağlantı noktasına]

--minor-alt sistem-sürüm değer
``Alt sistem sürümünün'' küçük numarasını ayarlar. Varsayılan 0'dır. [Bu seçenek
bağlayıcının i386 PE hedefli bağlantı noktasına özel]

--çıktı-def dosya
Bağlayıcı dosyayı oluşturacak dosya karşılık gelen bir DEF dosyası içerecektir.
bağlayıcının oluşturduğu DLL. Bu DEF dosyası ("*.def" olarak adlandırılmalıdır)
"dlltool" ile bir içe aktarma kitaplığı oluşturmak için kullanılabilir veya bir referans olarak kullanılabilir
otomatik veya dolaylı olarak dışa aktarılan semboller. [Bu seçenek i386 PE'ye özeldir
bağlayıcının hedeflenen bağlantı noktası]

--out-implib dosya
Bağlayıcı dosyayı oluşturacak dosya karşılık gelen bir içe aktarma lib içerecektir
bağlayıcının oluşturduğu DLL. Bu içe aktarma lib ("*.dll.a" olarak adlandırılmalıdır) veya
"*.a", istemcileri oluşturulan DLL dosyasına bağlamak için kullanılabilir; bu davranış onu
ayrı bir "dlltool" içe aktarma kitaplığı oluşturma adımını atlamak mümkündür. [Bu seçenek
bağlayıcının i386 PE hedefli bağlantı noktasına özel]

--enable-auto-image-base
Kullanılarak belirtilmediği sürece, DLL'ler için görüntü tabanını otomatik olarak seçin.
"--image-base" argümanı. Benzersiz oluşturmak için dll adından oluşturulan bir karma kullanarak
her DLL için görüntü tabanları, bellek içi çarpışmalar ve programı geciktirebilecek yer değiştirmeler
yürütülmesinden kaçınılır. [Bu seçenek, cihazın i386 PE hedefli bağlantı noktasına özeldir.
bağlayıcı]

--disable-auto-image-base
Otomatik olarak benzersiz bir görüntü tabanı oluşturmayın. Kullanıcı tanımlı değilse
image base ("--image-base") ardından platform varsayılanını kullanın. [Bu seçenek belirli
bağlayıcının i386 PE hedefli bağlantı noktasına]

--dll-arama-ön eki dizi
İçe aktarma kitaplığı olmayan bir dll'ye dinamik olarak bağlanırken, şunu arayın:
" .dll" yerine "lib" .dll". Bu davranış,
çeşitli "alt platformlar" için oluşturulmuş DLL'ler arasında kolay ayrım: yerel, cygwin,
uwin, pw, vb. Örneğin, cygwin DLL'leri genellikle "--dll-search-prefix=cyg" kullanır.
[Bu seçenek, bağlayıcının i386 PE hedefli bağlantı noktasına özeldir]

--etkinleştir-otomatik içe aktarma
DLL'lerden VERİ içe aktarmaları için "_symbol" ile "__imp__symbol" arasında karmaşık bağlantı yapın,
ve içe aktarma kitaplıklarını oluştururken gerekli thunking sembollerini oluşturun.
bu VERİ dışa aktarma işlemleri. Not: 'Otomatik içe aktarma' uzantısının kullanılması metnin
görüntü dosyasının yazılabilir hale getirilecek bölümü. Bu, PE-COFF'a uymuyor
Microsoft tarafından yayınlanan biçim belirtimi.

'Otomatik içe aktarma'yı kullanmak genellikle 'sadece çalışır' -- ancak bazen bunu görebilirsiniz
Mesaj:

"" değişkeni otomatik olarak içe aktarılamaz. Lütfen ld'ler için belgeleri okuyun
Ayrıntılar için "--enable-auto-import".

Bu mesaj, bazı (alt) ifadeler tarafından nihai olarak verilen bir adrese eriştiğinde ortaya çıkar.
iki sabitin toplamı (Win32 alma tabloları yalnızca birine izin verir). Bunun olduğu durumlar
DLL'den içe aktarılan yapı değişkenlerinin üye alanlarına erişimleri içerebilir,
bir DLL'den içe aktarılan bir dizi değişkenine sabit bir dizin kullanmanın yanı sıra. Herhangi
çok kelimeli değişken (diziler, yapılar, uzun uzun, vb.) bu hata koşulunu tetikleyebilir.
Ancak, sorunlu dışa aktarılan değişkenin tam veri türünden bağımsız olarak, ld
her zaman algıla, uyarıyı ver ve çık.

Veri türünden bağımsız olarak bu zorluğu gidermenin birkaç yolu vardır.
dışa aktarılan değişken:

Bunun bir yolu --enable-runtime-pseudo-reloc anahtarını kullanmaktır. Bu görevi bırakır
çalışma zamanı ortamı için istemci kodunuzdaki referansları ayarlama, böylece bu yöntem işe yarar
yalnızca çalışma zamanı ortamı bu özelliği desteklediğinde.

İkinci bir çözüm, 'sabitlerden' birini değişken olmaya zorlamaktır -- yani,
derleme zamanında bilinmeyen ve optimize edilemez. Diziler için iki olasılık vardır:
a) dizin sahibini (dizinin adresi) bir değişken yapın veya b) 'sabit' dizini yapın
bir değişken. Böylece:

dış tip dış_dizi[];
extern_array[1] -->
{ uçucu tip *t=harici_dizi; t[1] }

or

dış tip dış_dizi[];
extern_array[1] -->
{ uçucu int t=1; dış_dizi[t] }

Yapılar (ve diğer çoğu çok kelimeli veri türleri) için tek seçenek,
struct kendisini (veya uzun uzun veya ...) değişkeni:

dış yapı s dış_yapı;
extern_struct.field -->
{ uçucu yapı s *t=&extern_struct; t->alan }

or

extern uzun uzun extern_ll;
extern_ll -->
{ uçucu uzun uzun * local_ll=&extern_ll; *local_ll }

Bu zorlukla başa çıkmanın üçüncü bir yöntemi, 'otomatik içe aktarma'dan vazgeçmektir.
rahatsız edici sembol ve "__declspec(dllimport)" ile işaretleyin. Ancak pratikte bu
DLL oluşturup oluşturmadığınızı belirtmek için derleme zamanı #defines kullanılmasını gerektirir,
DLL'ye bağlanacak istemci kodu oluşturma veya yalnızca bir statik dosyaya bağlantı oluşturma/bağlama
kütüphane. "Doğrudan" sorunu çözmenin çeşitli yöntemleri arasında seçim yaparken
sabit ofset' sorunu ile adres, tipik gerçek dünya kullanımını göz önünde bulundurmalısınız:

Orijinal:

--foo.h
dış int dizi[];
--foo.c
#include "foo.h"
void main(int argc, char **argv){
printf("%d\n",dizi[1]);
}

Çözüm 1:

--foo.h
dış int dizi[];
--foo.c
#include "foo.h"
void main(int argc, char **argv){
/* Bu geçici çözüm, win32 ve cygwin içindir; "optimize etme" */
uçucu int *parr = arr;
printf("%d\n",parr[1]);
}

Çözüm 2:

--foo.h
/* Not: otomatik dışa aktarma varsayılır (__declspec(dllexport yok)) */
#if (tanımlı(_WIN32) ⎪⎪ tanımlı(__CYGWIN__)) && \
!(tanımlı(FOO_BUILD_DLL) ⎪⎪ tanımlı(FOO_STATIC))
#define FOO_IMPORT __declspec(dllimport)
#else
#define FOO_IMPORT
#endif
harici FOO_IMPORT int dizi[];
--foo.c
#include "foo.h"
void main(int argc, char **argv){
printf("%d\n",dizi[1]);
}

Bu sorunu önlemenin dördüncü bir yolu, kitaplığınızı işlevsel bir işlev kullanacak şekilde yeniden kodlamaktır.
kusurlu değişkenler için bir veri arayüzü yerine arayüz (örn. set_foo() ve
get_foo() erişim işlevleri). [Bu seçenek, i386 PE hedefli bağlantı noktasına özeldir
bağlayıcının]

--disable-otomatik içe aktarma
DATA için "_symbol" ile "__imp__symbol" arasında karmaşık bir bağlantı yapmaya çalışmayın
DLL'lerden içe aktarır. [Bu seçenek, cihazın i386 PE hedefli bağlantı noktasına özeldir.
bağlayıcı]

--enable-runtime-pseudo-reloc
Kodunuz --enable-auto-import bölümünde açıklanan ifadeleri içeriyorsa, yani,
DLL'den sıfır olmayan ofset ile VERİ içe aktarma, bu anahtar bir vektör oluşturacaktır
ayarlamak için çalışma zamanı ortamı tarafından kullanılabilen 'çalışma zamanı sözde yer değiştirmeleri'
müşteri kodunuzdaki bu tür verilere referanslar. [Bu seçenek i386 PE'ye özeldir
bağlayıcının hedeflenen bağlantı noktası]

--disable-runtime-pseudo-reloc
DLL'lerden sıfır olmayan ofset VERİ içe aktarmaları için sözde yer değiştirmeler oluşturmayın. Bu
varsayılan. [Bu seçenek, bağlayıcının i386 PE hedefli bağlantı noktasına özeldir]

--enable-extra-pe-debug
Sembolü otomatik içe aktarmayla ilgili ek hata ayıklama bilgilerini göster. [Bu seçenek
bağlayıcının i386 PE hedefli bağlantı noktasına özel]

--bölüm hizalama
Bölüm hizalamasını ayarlar. Bellekteki bölümler her zaman aşağıdaki adreslerde başlar:
bu sayının katıdır. Varsayılan olarak 0x1000'dir. [Bu seçenek,
Bağlayıcının i386 PE hedefli bağlantı noktası]

--yığın rezerv
--yığın rezerv,işlemek
Yığın olarak kullanılmak üzere ayrılacak (ve isteğe bağlı olarak taahhüt edilecek) bellek miktarını belirtin
bu program için. Varsayılan, 2Mb ayrılmış, 4K taahhütlüdür. [Bu seçenek
bağlayıcının i386 PE hedefli bağlantı noktasına özel]

--alt sistem hangi
--alt sistem hangi:büyük
--alt sistem hangi:büyük.küçük
Programınızın yürütüleceği alt sistemi belirtir. için yasal değerler
hangi "yerli", "windows", "console", "posix" ve "xbox"tır. isteğe bağlı olarak ayarlayabilirsiniz
alt sistem versiyonu da. için sayısal değerler de kabul edilir. hangi. [Bu seçenek
bağlayıcının i386 PE hedefli bağlantı noktasına özeldir]

68HC11 ve 68HC12 bağlayıcıları, bellek bankasını kontrol etmek için belirli seçenekleri destekler
anahtarlama eşleme ve trambolin kodu oluşturma.

--no-trambolin
Bu seçenek, trambolin oluşumunu devre dışı bırakır. Varsayılan olarak bir trambolin
"jsr" komutu kullanılarak çağrılan her bir uzak işlev için oluşturulur (bu
uzak bir işleve işaretçi alındığında olur).

--banka penceresi isim
Bu seçenek, bağlayıcıya bellek bölgesinin adını gösterir. BELLEK
bellek bankası penceresini açıklayan belirtim. Böyle bir bölgenin tanımı
daha sonra linker tarafından bellek penceresindeki sayfalama ve adresleri hesaplamak için kullanılır.

ÇEVRE


davranışını değiştirebilirsiniz ld "GNUTARGET" ortam değişkenleriyle,
"LDEMULATION" ve "COLLECT_NO_DEMANGLE".

"GNUTARGET", kullanmıyorsanız girdi dosyası nesne biçimini belirler. -b (veya eş anlamlısı
--biçim). Değeri, bir giriş biçimi için BFD adlarından biri olmalıdır. yoksa
Ortamda "GNUTARGET", ld hedefin doğal biçimini kullanır. Eğer "GNUTARGET"
"varsayılan" olarak ayarlandığında BFD, ikili dosyaları inceleyerek giriş biçimini keşfetmeye çalışır
girdi dosyaları; bu yöntem genellikle başarılı olur, ancak potansiyel belirsizlikler vardır, çünkü
nesne dosyası biçimlerini belirtmek için kullanılan sihirli sayının
benzersiz. Ancak, her sistemdeki BFD için yapılandırma prosedürü,
arama listesinde ilk sırada bu sistem için geleneksel biçim, böylece belirsizlikler çözülür
konvansiyon lehine.

"LDEMULATION", kullanmazsanız varsayılan öykünmeyi belirler. -m seçeneği.
öykünme, bağlayıcı davranışının çeşitli yönlerini, özellikle de varsayılan bağlayıcıyı etkileyebilir.
senaryo. Kullanılabilir emülasyonları listeleyebilirsiniz. --ayrıntılı or -V seçenekler. Eğer
-m seçeneği kullanılmaz ve "LDEMULATION" ortam değişkeni tanımlanmaz,
varsayılan öykünme, bağlayıcının nasıl yapılandırıldığına bağlıdır.

Normalde, bağlayıcı varsayılan olarak parçalayıcı sembollere sahip olacaktır. Ancak, eğer
"COLLECT_NO_DEMANGLE" ortamda ayarlanır, ardından varsayılan olarak çözülmez
semboller. Bu ortam değişkeni, "gcc" bağlayıcısı tarafından benzer şekilde kullanılır.
sarma programı. Varsayılan, aşağıdakiler tarafından geçersiz kılınabilir: --deangle ve --bozulma yok
seçenekleri.

onworks.net hizmetlerini kullanarak h8300-hms-ld'yi çevrimiçi kullanın


Ad


Ad