angielskifrancuskiniemieckiwłoskiportugalskirosyjskihiszpański

Ulubiona usługa OnWorks

mips64-linux-gnuabi64-ld - Online w chmurze

Uruchom mips64-linux-gnuabi64-ld u dostawcy bezpłatnego hostingu OnWorks przez Ubuntu Online, Fedora Online, emulator online Windows lub emulator online MAC OS

To jest polecenie mips64-linux-gnuabi64-ld, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu darmowych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online Windows lub emulator online systemu Mac OS

PROGRAM:

IMIĘ


ld — linker GNU

STRESZCZENIE


stary [Opcje] objfile ...

OPIS


ld łączy wiele plików obiektowych i archiwalnych, przenosi ich dane i wiąże symbol
Bibliografia. Zwykle ostatnim krokiem w kompilacji programu jest uruchomienie ld.

ld akceptuje pliki Linker Command Language napisane w nadzbiorze edytora linków AT&T
Składnia języka poleceń, zapewniająca wyraźną i całkowitą kontrolę nad procesem łączenia.

Ta strona podręcznika nie opisuje języka poleceń; zobacz ld wpis w "info" dla pełnego
szczegóły dotyczące języka poleceń i innych aspektów linkera GNU.

Ta wersja ld używa bibliotek BFD ogólnego przeznaczenia do operowania na plikach obiektowych. Ten
pozwala ld czytać, łączyć i zapisywać pliki obiektowe w wielu różnych formatach --- dla
na przykład COFF lub „a.out”. Różne formaty można łączyć ze sobą w celu uzyskania dowolnych
dostępny rodzaj pliku obiektowego.

Oprócz swojej elastyczności, linker GNU jest bardziej pomocny niż inne linkery w dostarczaniu
informacje diagnostyczne. Wiele linkerów porzuca wykonywanie natychmiast po napotkaniu
błąd; kiedykolwiek możliwe, ld kontynuuje wykonywanie, co pozwala zidentyfikować inne błędy
(lub, w niektórych przypadkach, pobranie pliku wyjściowego pomimo błędu).

Konsolidator GNU ld ma obejmować szeroki zakres sytuacji i być równie kompatybilny
jak to możliwe z innymi linkerami. W rezultacie masz wiele możliwości kontrolowania jego
zachowanie.

OPCJE


Linker obsługuje mnóstwo opcji wiersza poleceń, ale w praktyce niewiele z nich
są używane w określonym kontekście. Na przykład częste używanie ld jest połączenie
standardowe pliki obiektowe Unix w standardowym, obsługiwanym systemie Unix. W takim systemie, aby
link do pliku "hello.o":

Tak /lib/crt0.o cześć.o -lc

To mówi ld stworzyć plik o nazwie wydajność w wyniku połączenia pliku
"/lib/crt0.o" z "hello.o" i biblioteką "libc.a", która będzie pochodzić ze standardu
przeszukiwać katalogi. (Zobacz omówienie -l opcja poniżej.)

Niektóre opcje wiersza poleceń do ld można określić w dowolnym miejscu w wierszu poleceń.
Jednak opcje, które odnoszą się do plików, takie jak -l or -T, powoduje odczytanie pliku w
punkt, w którym opcja pojawia się w wierszu poleceń, w odniesieniu do plików obiektowych i
inne opcje plików. Powtarzanie opcji niezwiązanych z plikiem z innym argumentem będzie miało
brak dalszych efektów lub pomiń wcześniejsze wystąpienia (te znajdujące się dalej po lewej stronie polecenia)
wiersz) tej opcji. Opcje, które mogą być sensownie określone więcej niż raz, są
odnotowane w poniższych opisach.

Argumenty nie będące opcjami to pliki obiektowe lub archiwa, które mają być ze sobą połączone. Oni
może następować, poprzedzać lub być pomieszane z opcjami wiersza poleceń, z wyjątkiem tego, że plik obiektowy
argument nie może być umieszczony między opcją a jej argumentem.

Zwykle linker jest wywoływany z co najmniej jednym plikiem obiektowym, ale możesz określić inny
formy binarnych plików wejściowych przy użyciu -l, -Ri język poleceń skryptu. Gdyby Nie dwójkowy
w ogóle określone są pliki wejściowe, linker nie generuje żadnych danych wyjściowych i wydaje
wiadomość Nie wkład akta.

Jeśli linker nie może rozpoznać formatu pliku obiektowego, przyjmie, że jest to
skrypt konsolidatora. Skrypt określony w ten sposób rozszerza główny skrypt linkera używany do
link (albo domyślny skrypt linkera, albo ten określony przez użycie -T). To
funkcja pozwala linkerowi połączyć się z plikiem, który wydaje się być obiektem lub
archiwum, ale w rzeczywistości definiuje tylko niektóre wartości symboli lub używa "INPUT" lub "GROUP" do
załadować inne obiekty. Określanie skryptu w ten sposób jedynie rozszerza główny linker
skrypt, z dodatkowymi poleceniami umieszczonymi po głównym skrypcie; Użyj -T możliwość wymiany
całkowicie domyślny skrypt konsolidujący, ale zwróć uwagę na efekt polecenia "INSERT".

W przypadku opcji, których nazwy są pojedynczą literą, argumenty opcji muszą albo następować po
litera opcji bez odstępów lub jako oddzielne argumenty
bezpośrednio po opcji, która ich wymaga.

W przypadku opcji, których nazwy składają się z wielu liter, jeden myślnik lub dwa mogą poprzedzać
nazwa opcji; na przykład, -symbol-śledzenia dzięki --symbol-śledzenia są równoważne. Uwaga --- tam
jest jednym wyjątkiem od tej reguły. Opcje wielu liter, które zaczynają się od małej litery „o”
może być poprzedzony tylko dwoma myślnikami. Ma to na celu zmniejszenie zamieszania z -o opcja. Więc
na przykład -omagiczny ustawia nazwę pliku wyjściowego na magia natomiast --omagiczny ustawia NMAGIC
flaga na wyjściu.

Argumenty do opcji wieloliterowych muszą być oddzielone od nazwy opcji przez
znak równości lub być podane jako oddzielne argumenty bezpośrednio po opcji, która:
wymaga ich. Na przykład, --symbol-śledzenia bla dzięki --symbol-śledzenia=foo są równoważne.
Akceptowane są unikalne skróty nazw opcji wieloliterowych.

Uwaga---jeśli linker jest wywoływany pośrednio, przez sterownik kompilatora (np. gcc) następnie
wszystkie opcje wiersza poleceń konsolidatora powinny być poprzedzone -Wl, (lub cokolwiek jest odpowiednie)
dla konkretnego sterownika kompilatora) w ten sposób:

gcc -Wl,--start-group foo.o bar.o -Wl,--end-group

Jest to ważne, ponieważ w przeciwnym razie sterownik kompilatora może po cichu porzucić
opcje linkera, co skutkuje złym łączem. Zamieszanie może również powstać przy przekazywaniu opcji
które wymagają wartości przez sterownik, jako użycie spacji między opcją a argumentem
działa jako separator i powoduje, że sterownik przekazuje tylko opcję do konsolidatora, a
argument do kompilatora. W takim przypadku najprościej jest użyć połączonych form obu
opcje jedno- i wieloliterowe, takie jak:

gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map

Oto tabela ogólnych przełączników wiersza poleceń akceptowanych przez linker GNU:

@filet
Czytaj opcje wiersza poleceń z filet. Odczytane opcje są wstawiane w miejsce
oryginał @filet opcja. Gdyby filet nie istnieje lub nie można go odczytać, to opcja
będą traktowane dosłownie, a nie usuwane.

Opcje w filet są oddzielone białymi znakami. Może być dołączony znak odstępu
w opcji, otaczając całą opcję pojedynczym lub podwójnym cudzysłowem. Każdy
znak (w tym ukośnik odwrotny) może być dołączany przez poprzedzenie znaku, który ma być
w zestawie z odwrotnym ukośnikiem. ten filet może sam zawierać dodatkowe @filet opcje; każdy
takie opcje będą przetwarzane rekurencyjnie.

-a keyword
Ta opcja jest obsługiwana w celu zapewnienia zgodności z HP/UX. ten keyword argument musi być jednym z
sznurki archiwum, sharedlub domyślnym. -archiwum jest funkcjonalnie równoważne z
-Bstatyczny, a pozostałe dwa słowa kluczowe są funkcjonalnie równoważne -Bdynamic, To
opcja może być użyta dowolną ilość razy.

--rewizja AUDITLIB
Dodaje AUDITLIB do wpisu "DT_AUDIT" sekcji dynamicznej. AUDITLIB nie jest zaznaczone
dla istnienia, ani nie użyje DT_SONAME określonego w bibliotece. Jeśli określono
wielokrotnie "DT_AUDIT" będzie zawierać rozdzieloną dwukropkami listę interfejsów audytu do
posługiwać się. Jeśli linker znajdzie obiekt z wpisem audytu podczas wyszukiwania udostępnionych
bibliotek, doda odpowiedni wpis "DT_DEPAUDIT" w pliku wyjściowym. Ten
opcja ma znaczenie tylko na platformach ELF obsługujących interfejs rtld-audit.

-A architektura
--architektura=architektura
W aktualnym wydaniu ld, ta opcja jest przydatna tylko dla rodziny Intel 960
architektury. W tym ld konfiguracja, architektura argument identyfikuje
szczególną architekturę z rodziny 960, umożliwiającą pewne zabezpieczenia i modyfikację
ścieżka przeszukiwania archiwum-biblioteki.

Przyszłe wydania ld może obsługiwać podobną funkcjonalność dla innych architektur
rodzin.

-b format wejściowy
--format=format wejściowy
ld może być skonfigurowany do obsługi więcej niż jednego rodzaju pliku obiektowego. Jeżeli twój ld is
skonfigurowany w ten sposób, możesz użyć -b możliwość określenia formatu binarnego dla wejścia
pliki obiektowe, które następują po tej opcji w wierszu poleceń. Nawet kiedy ld jest skonfigurowany
aby obsługiwać alternatywne formaty obiektów, zwykle nie musisz tego określać, ponieważ ld
powinien być skonfigurowany tak, aby oczekiwał jako domyślnego formatu wejściowego najbardziej zwykłego formatu na każdym z nich
maszyna. format wejściowy to ciąg tekstowy, nazwa konkretnego formatu obsługiwanego przez
biblioteki BFD. (Dostępne formaty binarne można wyświetlić za pomocą objdump -i.)

Możesz użyć tej opcji, jeśli łączysz pliki za pomocą nietypowego pliku binarnego
format. Możesz także użyć -b jawnie przełączać formaty (podczas łączenia plików obiektowych)
w różnych formatach), włączając -b format wejściowy przed każdą grupą plików obiektowych
w określonym formacie.

Domyślny format jest pobierany ze zmiennej środowiskowej „GNUTARGET”.

Możesz także zdefiniować format wejściowy ze skryptu, używając polecenia „CEL”;

-c Plik poleceń MRI
--mri-skrypt=Plik poleceń MRI
Dla kompatybilności z linkerami produkowanymi przez MRI, ld akceptuje pliki skryptów napisane w
alternatywny, ograniczony język poleceń, opisany w plikach skryptów zgodnych z MRI
sekcji dokumentacji GNU ld. Wprowadź pliki skryptów MRI z opcją -c; posługiwać się
die,en -T możliwość uruchamiania skryptów linkera napisanych w ogólnym przeznaczeniu ld Skrypty
język. Gdyby MRI-cmdfile nie istnieje, ld szuka go w określonych katalogach
Przez dowolnego -L Opcje.

-d
-dc
-dp Te trzy opcje są równoważne; dla zapewnienia kompatybilności obsługiwanych jest wiele formularzy
z innymi linkerami. Przypisują przestrzeń wspólnym symbolom, nawet jeśli relokowalne wyjście
plik jest określony (z -r). Polecenie skryptu „FORCE_COMMON_ALLOCATION” ma
ten sam efekt.

--deaudyt AUDITLIB
-P AUDITLIB
Dodaje AUDITLIB do wpisu "DT_DEPAUDIT" sekcji dynamicznej. AUDITLIB nie jest
sprawdzane pod kątem istnienia, ani nie użyje DT_SONAME określonego w bibliotece. Gdyby
określony wielokrotnie "DT_DEPAUDIT" będzie zawierał listę audytów oddzielonych dwukropkami
interfejsy do użycia. Ta opcja ma znaczenie tylko na platformach ELF obsługujących
interfejs audytu rtld. Opcja -P zapewnia zgodność z systemem Solaris.

-e wejście
--entry=wejście
Zastosowanie wejście jako wyraźny symbol rozpoczęcia wykonywania programu, a nie
domyślny punkt wejścia. Jeśli nie ma symbolu o nazwie wejście, linker spróbuje
analizować wejście jako liczbę i użyj go jako adresu wejściowego (liczba będzie
interpretowane w podstawie 10; możesz użyć wiodącej 0x dla podstawy 16 lub wiodącej 0 dla bazy
8).

--wyklucz-libs lib,lib, ...
Określa listę bibliotek archiwalnych, z których symbole nie powinny być automatycznie
eksportowane. Nazwy bibliotek mogą być oddzielone przecinkami lub dwukropkami. Określanie
„--exclude-libs ALL” wyklucza symbole we wszystkich bibliotekach archiwów z automatycznego eksportu.
Ta opcja jest dostępna tylko dla docelowego portu i386 PE linkera i dla ELF
docelowe porty. W przypadku i386 PE symbole wyraźnie wymienione w pliku .def są nadal
wyeksportowane, niezależnie od tej opcji. W przypadku portów docelowych ELF symbole, na które ma to wpływ
opcja będzie traktowana jako ukryta.

--wyklucz-moduły-dla-implib moduł,moduł, ...
Określa listę plików obiektowych lub członków archiwum, z których symbole nie powinny pochodzić
automatycznie eksportowane, ale które należy skopiować hurtowo do biblioteki importu
generowane podczas linku. Nazwy modułów mogą być oddzielone przecinkami lub
dwukropki i muszą dokładnie pasować do nazw plików używanych przez ld otworzyć pliki; do archiwum
członków, jest to po prostu nazwa członka, ale w przypadku plików obiektowych podana nazwa musi:
uwzględnij i dopasuj dokładnie dowolną ścieżkę używaną do określenia pliku wejściowego w linkerze
wiersz poleceń. Ta opcja jest dostępna tylko dla docelowego portu i386 PE
linker. Symbole wyraźnie wymienione w pliku .def są nadal eksportowane, niezależnie od
ta opcja.

-E
--eksport-dynamika
--brak eksportu-dynamicznego
Podczas tworzenia dynamicznie połączonego pliku wykonywalnego, używając -E opcja lub
--eksport-dynamika opcja powoduje, że linker dodaje wszystkie symbole do symbolu dynamicznego
Tabela. Dynamiczna tablica symboli to zestaw symboli widocznych z dynamicznego
obiekty w czasie wykonywania.

Jeśli nie używasz żadnej z tych opcji (lub użyj --brak eksportu-dynamicznego opcja do
przywrócić domyślne zachowanie), dynamiczna tablica symboli będzie zwykle zawierała tylko
te symbole, do których odwołuje się jakiś obiekt dynamiczny wspomniany w łączu.

Jeśli użyjesz "dlopen" do załadowania dynamicznego obiektu, który musi odwoływać się do symboli
zdefiniowany przez program, a nie jakiś inny dynamiczny obiekt, prawdopodobnie będziesz
należy użyć tej opcji podczas łączenia samego programu.

Możesz także użyć dynamicznej listy, aby kontrolować, jakie symbole powinny być dodawane do
dynamiczna tablica symboli, jeśli format wyjściowy ją obsługuje. Zobacz opis
--dynamic-lista.

Zauważ, że ta opcja jest specyficzna dla portów docelowych ELF. Cele PE obsługują podobne
funkcja eksportu wszystkich symboli z biblioteki DLL lub EXE; zobacz opis
--eksportuj-wszystkie-symbole poniżej.

-EB Połącz obiekty big-endian. Ma to wpływ na domyślny format wyjściowy.

-EL Połącz obiekty little-endian. Ma to wpływ na domyślny format wyjściowy.

-f Nazwa
--pomocniczy=Nazwa
Podczas tworzenia obiektu współdzielonego ELF ustaw wewnętrzne pole DT_AUXILIARY na
podana nazwa. To mówi dynamicznemu linkerowi, że tablica symboli współdzielonego
obiekt powinien być użyty jako filtr pomocniczy w tabeli symboli współdzielonego obiektu
Nazwa.

Jeśli później połączysz program z tym obiektem filtrującym, to po uruchomieniu
programu, dynamiczny linker zobaczy pole DT_AUXILIARY. Jeśli dynamiczny linker
rozwiązuje dowolne symbole z obiektu filtrującego, najpierw sprawdza, czy istnieje
definicja w obiekcie udostępnionym Nazwa. Jeśli istnieje, zostanie użyty zamiast
definicja w obiekcie filtru. Wspólny obiekt Nazwa nie musi istnieć. Więc
wspólny obiekt Nazwa mogą być wykorzystane do zapewnienia alternatywnej realizacji niektórych
funkcje, być może do debugowania lub wydajności specyficznej dla maszyny.

Ta opcja może być podana więcej niż raz. Zostaną utworzone wpisy DT_AUXILIARY
w kolejności, w jakiej pojawiają się w wierszu poleceń.

-F Nazwa
--filtr=Nazwa
Podczas tworzenia obiektu współdzielonego ELF ustaw wewnętrzne pole DT_FILTER na określone
Nazwa. To mówi dynamicznemu linkerowi, że tablica symboli współdzielonego obiektu, który
jest tworzony powinien być używany jako filtr w tablicy symboli współdzielonego obiektu
Nazwa.

Jeśli później połączysz program z tym obiektem filtrującym, to po uruchomieniu
program, dynamiczny linker zobaczy pole DT_FILTER. Dynamiczny linker będzie
rozwiąż symbole zgodnie z tabelą symboli obiektu filtrującego, jak zwykle, ale
faktycznie linkuje do definicji znalezionych w udostępnionym obiekcie Nazwa. Więc
obiekt filtrujący może być użyty do wybrania podzbioru symboli dostarczanych przez obiekt
Nazwa.

Niektóre starsze linkery używały -F opcja w całym łańcuchu narzędzi do kompilacji dla
określenie formatu pliku obiektowego zarówno dla wejściowych, jak i wyjściowych plików obiektowych. Konsolidator GNU
wykorzystuje w tym celu inne mechanizmy: -b, --format, --format opcje,
Komenda "TARGET" w skryptach konsolidatora i zmienna środowiskowa "GNUTARGET". GNU
linker zignoruje -F opcja, gdy nie tworzysz obiektu współdzielonego ELF.

-fini=Nazwa
Podczas tworzenia pliku wykonywalnego lub obiektu współdzielonego ELF, wywołaj NAME, gdy plik wykonywalny lub
obiekt współdzielony jest rozładowywany przez ustawienie DT_FINI na adres funkcji. Za pomocą
domyślnie linker używa "_fini" jako funkcji do wywołania.

-g Zignorowany. Zapewniona kompatybilność z innymi narzędziami.

-G wartość
--gpsrozmiar=wartość
Ustaw maksymalny rozmiar obiektów do optymalizacji za pomocą rejestru GP na rozmiar, To
ma znaczenie tylko w przypadku formatów plików obiektowych, takich jak MIPS ELF, które obsługują umieszczanie dużych
i małe przedmioty na różne sekcje. Jest to ignorowane w przypadku innego pliku obiektowego
formaty.

-h Nazwa
-soname=Nazwa
Podczas tworzenia obiektu współdzielonego ELF ustaw wewnętrzne pole DT_SONAME na określone
Nazwa. Gdy plik wykonywalny jest połączony z obiektem udostępnionym, który ma pole DT_SONAME,
wtedy, gdy plik wykonywalny zostanie uruchomiony, dynamiczny linker spróbuje załadować współdzielony
obiekt określony przez pole DT_SONAME zamiast używania nazwy pliku podanej do
linker.

-i Wykonaj link przyrostowy (tak samo jak opcja -r).

-początek=Nazwa
Podczas tworzenia pliku wykonywalnego lub obiektu współdzielonego ELF, wywołaj NAME, gdy plik wykonywalny lub
obiekt współdzielony jest ładowany przez ustawienie DT_INIT na adres funkcji. Za pomocą
Domyślnie linker używa "_init" jako funkcji do wywołania.

-l nazwa
--biblioteka=nazwa
Dodaj archiwum lub plik obiektowy określony przez nazwa do listy plików do połączenia.
Ta opcja może być użyta dowolną ilość razy. Gdyby nazwa ma formę :Nazwa pliku, ld
przeszuka ścieżkę biblioteki w poszukiwaniu pliku o nazwie filename, w przeciwnym razie przeszuka
ścieżka biblioteki dla pliku o nazwie libnamespec.a.

W systemach obsługujących biblioteki współdzielone, ld może również wyszukiwać pliki inne niż
libnamespec.a. W szczególności w systemach ELF i SunOS, ld przeszuka katalog dla
biblioteka o nazwie libnamespec.so przed wyszukaniem jednego o nazwie libnamespec.a. (Za pomocą
konwencji, rozszerzenie „.so” oznacza bibliotekę współdzieloną.) Zauważ, że to zachowanie
Nie dotyczy :Nazwa pliku, który zawsze określa plik o nazwie filename.

Linker przeszuka archiwum tylko raz, w lokalizacji, w której jest określone w
wiersz poleceń. Jeśli archiwum definiuje symbol, który był niezdefiniowany w jakimś obiekcie
który pojawił się przed archiwum w wierszu poleceń, linker będzie zawierał
odpowiedni plik(i) z archiwum. Jednak niezdefiniowany symbol w obiekcie
pojawiające się później w wierszu poleceń nie spowoduje, że linker przeszuka archiwum
ponownie.

Zobacz -( opcja pozwalająca wymusić na linkerze wielokrotne przeszukiwanie archiwów.

Możesz wielokrotnie wyświetlić to samo archiwum w wierszu poleceń.

Ten typ przeszukiwania archiwów jest standardem dla linkerów uniksowych. Jeśli jednak jesteś
za pomocą ld w systemie AIX należy zauważyć, że różni się on od zachowania konsolidatora AIX.

-L searchdir
--library-path=searchdir
Dodaj ścieżkę searchdir do listy ścieżek, które ld poszuka bibliotek archiwalnych i
ld skrypty sterujące. Możesz skorzystać z tej opcji dowolną ilość razy. Katalogi są
przeszukiwane w kolejności, w jakiej zostały określone w wierszu poleceń. Katalogi
określone w wierszu poleceń są przeszukiwane przed katalogami domyślnymi. Wszystko -L
opcje dotyczą wszystkich -l opcje, niezależnie od kolejności, w jakiej pojawiają się opcje.
-L opcje nie wpływają na to, jak ld wyszukuje skrypt linkera, chyba że -T Jest opcja
określony.

If searchdir zaczyna się od „=”, następnie „=” zostanie zastąpiony przez sysroot prefiks,
kontrolowany przez --główny system opcja lub określona, ​​gdy konsolidator jest skonfigurowany.

Domyślny zestaw przeszukiwanych ścieżek (bez określenia za pomocą -L) zależy od czego
tryb emulacji ld używa, a w niektórych przypadkach także od sposobu jego konfiguracji.

Ścieżki można również określić w skrypcie łącza za pomocą polecenia „SEARCH_DIR”.
Katalogi określone w ten sposób są przeszukiwane w miejscu, w którym skrypt linkera
pojawia się w wierszu poleceń.

-m współzawodnictwo
Emuluj współzawodnictwo linker. Możesz wyświetlić listę dostępnych emulacji za pomocą
--gadatliwy or -V Opcje.

Jeśli -m opcja nie jest używana, emulacja pobierana jest z "LDEMULATION"
zmienna środowiskowa, jeśli jest zdefiniowana.

W przeciwnym razie domyślna emulacja zależy od konfiguracji konsolidatora.

-M
--drukuj-mapę
Wydrukuj mapę łączy na standardowe wyjście. Mapa łączy zawiera informacje o
link, w tym następujące:

· Gdzie pliki obiektowe są mapowane do pamięci.

· Jak przydzielane są wspólne symbole.

· Wszyscy członkowie archiwum uwzględnieni w linku, ze wzmianką o symbolu, który
spowodowało sprowadzenie członka archiwum.

· Wartości przypisane do symboli.

Uwaga - symbole, których wartości są obliczane przez wyrażenie, które zawiera a
odwołanie do poprzedniej wartości tego samego symbolu może nie mieć poprawnego wyniku
wyświetlane na mapie linków. Dzieje się tak, ponieważ linker odrzuca półprodukt
wyniki i zachowuje tylko końcową wartość wyrażenia. Pod takim
okoliczności, linker wyświetli końcową wartość ujętą w nawiasy kwadratowe.
Na przykład skrypt linkera zawierający:

foo = 1
foo = foo * 4
foo = foo + 8

wygeneruje następujący wynik na mapie łączy, jeśli -M używana jest opcja:

0x00000001 foo = 0x1
[0x0000000c] foo = (foo * 0x4)
[0x0000000c] foo = (foo + 0x8)

Widzieć Expressions aby uzyskać więcej informacji o wyrażeniach w skryptach konsolidatora.

-n
--nmagic
Wyłącz wyrównanie stron w sekcjach i wyłącz łączenie z bibliotekami współdzielonymi. Gdyby
format wyjściowy obsługuje magiczne liczby w stylu Uniksa, oznacz dane wyjściowe jako „NMAGIC”.

-N
--omagiczny
Ustaw sekcje tekstu i danych tak, aby były czytelne i możliwe do zapisania. Nie wyrównuj też strony
segment danych i wyłącz łączenie z bibliotekami współdzielonymi. Jeśli format wyjściowy
obsługuje magiczne liczby w stylu Uniksa, oznacz wyjście jako "OMAGIC". Uwaga: chociaż a
zapisywalny tekst jest dozwolony dla celów PE-COFF, nie jest zgodny z
specyfikacja formatu opublikowana przez Microsoft.

--no-omagiczny
Ta opcja neguje większość efektów -N opcja. Ustawia sekcję tekstową na
być tylko do odczytu i wymusza wyrównanie segmentu danych do strony. Uwaga - ta opcja nie
nie włączaj łączenia z bibliotekami współdzielonymi. Posługiwać się -Bdynamic dla tego.

-o wydajność
--wyjście=wydajność
Zastosowanie wydajność jako nazwa programu wyprodukowanego przez ld; jeśli ta opcja nie jest
określone, nazwa a.out jest używany domyślnie. Polecenie skryptu „WYJŚCIE” może również
określ nazwę pliku wyjściowego.

-O poziom
If poziom jest wartością liczbową większą od zera ld optymalizuje wydajność. To może
trwa to znacznie dłużej i dlatego prawdopodobnie powinno być włączone tylko do finału
dwójkowy. W tej chwili ta opcja ma wpływ tylko na generowanie bibliotek współdzielonych ELF. Przyszły
wersje linkera mogą w większym stopniu korzystać z tej opcji. Również obecnie nie ma
różnica w zachowaniu linkera dla różnych niezerowych wartości tej opcji.
Znowu może się to zmienić w przyszłych wydaniach.

-- stan wypychania
Pandemia -- stan wypychania pozwala na zachowanie aktualnego stanu flag rządzących
obsługa plików wejściowych, aby wszystkie mogły zostać przywrócone za pomocą jednego odpowiadającego
--pop-stan opcja.

Opcje, które są objęte to: -Bdynamic, -Bstatyczny, -dn, -dy, -call_shared,
-nieudostępnione, -statyczny, -N, -n, --całe-archiwum, --brak-całego-archiwum, -r, -Ur,
--kopiuj-dt-potrzebne-wpisy, --brak-kopii-dt-potrzebnych-wpisów, --w razie potrzeby, --nie-w razie potrzeby,
dzięki -a.

Jednym z celów tej opcji są specyfikacje dla konfiguracja-pkg. W przypadku użycia z
--libs opcja wszystkie ewentualnie potrzebne biblioteki są wymienione, a następnie ewentualnie połączone z
cały czas. Lepiej zwrócić coś w następujący sposób:

-Wl,--push-state,--w razie potrzeby -libone -libtwo -Wl,--pop-state

Cofa efekt --push-state, przywraca poprzednie wartości flag zarządzających
obsługa plików wejściowych.

-q
--emituj-relokacje
Pozostaw sekcje i treści związane z przeniesieniem w pełni połączonych plikach wykonywalnych. Opublikuj link
narzędzia analityczne i optymalizacyjne mogą potrzebować tych informacji w celu poprawnego wykonania
modyfikacje plików wykonywalnych. Powoduje to większe pliki wykonywalne.

Ta opcja jest obecnie obsługiwana tylko na platformach ELF.

--force-dynamic
Wymuś, aby plik wyjściowy zawierał sekcje dynamiczne. Ta opcja jest specyficzna dla VxWorks
Cele.

-r
--przenośny
Generowanie relokowalnych danych wyjściowych ---tj. generowanie pliku wyjściowego, który z kolei może służyć jako
wejście do ld. Nazywa się to często częściowo Powiązanie. Jako efekt uboczny w środowiskach
które obsługują standardowe magiczne liczby Uniksa, ta opcja ustawia również
magiczna liczba do "OMAGIC". Jeśli ta opcja nie jest określona, ​​plik bezwzględny to
wytworzony. Podczas łączenia programów w C++ ta opcja będzie nie rozwiązać odniesienia do
konstruktorzy; aby to zrobić, użyj -Ur.

Gdy plik wejściowy nie ma tego samego formatu, co plik wyjściowy, częściowe linkowanie
jest obsługiwane tylko wtedy, gdy ten plik wejściowy nie zawiera żadnych relokacji. Różne
formaty wyjściowe mogą mieć dalsze ograniczenia; na przykład niektóre formaty oparte na "a.out"
w ogóle nie obsługują częściowego łączenia z plikami wejściowymi w innych formatach.

Ta opcja robi to samo, co -i.

-R filename
--tylko-symbole=filename
Czytaj nazwy symboli i ich adresy z filename, ale nie przenoś go ani nie dołączaj
to w danych wyjściowych. Dzięki temu plik wyjściowy może odwoływać się symbolicznie do wartości absolutnej
lokalizacje pamięci zdefiniowane w innych programach. Z tej opcji możesz korzystać częściej niż
pewnego razu.

Dla zgodności z innymi linkerami ELF, jeśli -R po opcji następuje katalog
nazwa, a nie nazwa pliku, jest traktowana jako -rpath opcja.

-s
--rozebrać-wszystko
Pomiń wszystkie informacje o symbolach z pliku wyjściowego.

-S
--strip-debug
Pomiń informacje o symbolach debugera (ale nie wszystkie symbole) z pliku wyjściowego.

-t
--namierzać
Wydrukuj nazwy plików wejściowych jako ld przetwarza je.

-T plik skryptu
--skrypt=plik skryptu
Zastosowanie plik skryptu jako skrypt linkera. Ten skrypt zastępuje lddomyślny skrypt konsolidatora
(zamiast dodawać do tego), więc plik poleceń musi określić wszystko, co niezbędne, aby
opisz plik wyjściowy. Gdyby plik skryptu nie istnieje w bieżącym katalogu,
"ld" szuka go w katalogach określonych przez poprzednie -L opcje. Wiele
-T opcje się kumulują.

-dT plik skryptu
--domyślny-skrypt=plik skryptu
Zastosowanie plik skryptu jako domyślny skrypt konsolidatora.

Ta opcja jest podobna do --scenariusz opcja poza tym, że przetwarzanie skryptu jest
opóźnione do czasu przetworzenia reszty wiersza poleceń. To pozwala
opcje umieszczone po --domyślny-skrypt opcja w wierszu poleceń, aby wpłynąć na
zachowanie skryptu linkera, co może być ważne, gdy wiersz poleceń linkera
nie mogą być bezpośrednio kontrolowane przez użytkownika. (np. ponieważ linia poleceń jest
skonstruowane przez inne narzędzie, takie jak gcc).

-u symbol
--undefined=symbol
wytrzymałość symbol do wpisania w pliku wyjściowym jako niezdefiniowany symbol. Czyniąc to może,
na przykład wyzwalać łączenie dodatkowych modułów ze standardowych bibliotek. -u może być
powtórzone z różnymi argumentami opcji, aby wprowadzić dodatkowe niezdefiniowane symbole. Ten
opcja jest równoważna poleceniu skryptu konsolidatora "EXTERN".

Jeśli ta opcja jest używana do wymuszenia wciągnięcia dodatkowych modułów do łącza,
a jeśli błędem jest to, że symbol pozostaje niezdefiniowany, to opcja
--wymagaj-zdefiniowane powinien być użyty zamiast tego.

--require-defined=symbol
Wymagaj tego symbol jest zdefiniowany w pliku wyjściowym. Ta opcja jest taka sama jak opcja
--nieokreślony z wyjątkiem tego, że jeśli symbol nie jest zdefiniowany w pliku wyjściowym, to linker
zgłosi błąd i wyjdzie. Ten sam efekt można osiągnąć w skrypcie linkera poprzez:
używając jednocześnie „EXTERN”, „ASSERT” i „DEFINED”. Ta opcja może być używana wielokrotnie
razy, aby wymagać dodatkowych symboli.

-Ur W przypadku programów innych niż C++ ta opcja jest równoważna z -r: generuje
relokowalne wyjście ---tj. plik wyjściowy, który z kolei może służyć jako wejście do ld. Kiedy
łączenie programów C++, -Ur robi rozwiązać odniesienia do konstruktorów, w przeciwieństwie do -r. To robi
nie działa w użyciu -Ur na plikach, które same były połączone z -Ur; kiedyś
została zbudowana tabela konstruktorów, nie można do niej dodawać. Posługiwać się -Ur tylko na koniec
częściowy link i -r dla innych.

--orphan-obsługa=TRYB
Kontroluj sposób obsługi sekcji osieroconych. Sekcja osierocona to nie konkretnie
wymienione w skrypcie linkera.

TRYB może mieć dowolną z następujących wartości:

"miejsce"
Sekcje osierocone są umieszczane w odpowiedniej sekcji wyjściowej zgodnie ze strategią
opisane w Sierota sekcje. Opcja --jedyny w swoim rodzaju wpływa również na to, jak są sekcje
umieszczony.

"odrzucać"
Wszystkie sekcje osierocone są odrzucane, umieszczając je w /ODRZUCAĆ/ Sekcja.

"ostrzegać"
Konsolidator umieści sekcję osieroconą jak w przypadku "miejsca" i również wyśle ​​ostrzeżenie.

"błąd"
Konsolidator zakończy działanie z błędem, jeśli zostanie znaleziona jakakolwiek sekcja osierocona.

Domyślny, jeśli --sierota-obsługa nie podano "miejsca".

--unikalny[=SEKCJA]
Tworzy osobną sekcję wyjściową dla każdej pasującej sekcji wejściowej SEKCJAlub jeśli
opcjonalny symbol wieloznaczny SEKCJA brakuje argumentu dla każdej osieroconej sekcji wejściowej. jakiś
Sekcja osierocona to taka, która nie została wyraźnie wymieniona w skrypcie linkera. Możesz użyć tego
opcja wielokrotnie w wierszu poleceń; Zapobiega normalnemu łączeniu danych wejściowych
sekcje o tej samej nazwie, nadpisujące przypisania sekcji wyjściowych w skrypcie linkera.

-v
--wersja
-V Wyświetl numer wersji dla ld, -V opcja wyświetla również obsługiwane emulacje.

-x
--odrzuć-wszystko
Usuń wszystkie lokalne symbole.

-X
--odrzuć-lokalne
Usuń wszystkie tymczasowe symbole lokalne. (Te symbole zaczynają się od specyficznego dla systemu lokalnego
przedrostki etykiet, zazwyczaj .L dla systemów ELF lub L dla tradycyjnych systemów a.out.)

-y symbol
--symbol-śledzenia=symbol
Wydrukuj nazwę każdego połączonego pliku, w którym symbol wydaje. Ta opcja może być podana
dowolną liczbę razy. W wielu systemach konieczne jest dodanie podkreślenia.

Ta opcja jest przydatna, gdy masz niezdefiniowany symbol w swoim łączu, ale nie wiesz
skąd pochodzi odwołanie.

-Y ścieżka
Add ścieżka do domyślnej ścieżki wyszukiwania biblioteki. Ta opcja istnieje dla Solaris
kompatybilność.

-z keyword
Rozpoznawane słowa kluczowe to:

combreloc
Łączy wiele sekcji relokacji i sortuje je, aby uzyskać dynamiczne wyszukiwanie symboli
możliwe buforowanie.

defs
Nie zezwala na niezdefiniowane symbole w plikach obiektów. Niezdefiniowane symbole w udostępnionych
biblioteki są nadal dozwolone.

execstack
Oznacza obiekt jako wymagający stosu wykonywalnego.

światowy
Ta opcja ma znaczenie tylko podczas budowania obiektu współdzielonego. To sprawia, że
symbole zdefiniowane przez ten obiekt współdzielony dostępne dla rozdzielczości symbolu
następnie załadowane biblioteki.

initfirst
Ta opcja ma znaczenie tylko podczas budowania obiektu współdzielonego. Oznacza przedmiot
tak, że jego inicjalizacja środowiska uruchomieniowego nastąpi przed inicjalizacją środowiska wykonawczego
wszelkie inne przedmioty wprowadzone do procesu w tym samym czasie. Podobnie
finalizacja runtime obiektu nastąpi po finalizacji runtime
wszelkie inne przedmioty.

wstawić
Zaznacza obiekt, który jego tablica symboli wstawia przed wszystkimi symbolami oprócz
podstawowy plik wykonywalny.

leniwy
Generując bibliotekę wykonywalną lub współdzieloną, zaznacz ją, aby poinformować dynamic
linker do odroczenia rozwiązania wywołania funkcji do punktu, w którym funkcja jest wywoływana
(leniwe wiązanie), a nie w czasie ładowania. Domyślne jest leniwe wiązanie.

loadfltr
Oznacza obiekt, którego filtry mają być przetwarzane natychmiast w czasie wykonywania.

muldef
Pozwala na wiele definicji.

nocombreloc
Wyłącza łączenie wielu przekrojów relokacji.

nokopyreloc
Wyłącz zmienne .dynbss generowane przez linker używane zamiast zmiennych zdefiniowanych w
biblioteki współdzielone. Może skutkować dynamicznymi przesunięciami tekstu.

brak domyślnej lib
Zaznacza obiekt, że wyszukiwanie zależności tego obiektu zignoruje jakiekolwiek
domyślne ścieżki wyszukiwania bibliotek.

nodelete
Oznacza, że ​​obiekt nie powinien być rozładowywany w czasie wykonywania.

nodlopen
Zaznacza obiekt niedostępny do "dlopen".

nodump
Oznacza, że ​​obiekt nie może zostać zrzucony przez "dldump".

noexecstack
Oznacza obiekt jako niewymagający stosu wykonywalnego.

tekst
Traktuj DT_TEXTREL w obiekcie udostępnionym jako błąd.

brak tekstu
Nie traktuj DT_TEXTREL w udostępnionym obiekcie jako błędu.

tekst wył.
Nie traktuj DT_TEXTREL w udostępnionym obiekcie jako błędu.

norelro
Nie twórz nagłówka segmentu ELF „PT_GNU_RELRO” w obiekcie.

już dziś Generując bibliotekę wykonywalną lub współdzieloną, zaznacz ją, aby poinformować dynamic
linker do rozwiązywania wszystkich symboli, gdy program jest uruchamiany lub gdy współdzielone
biblioteka jest połączona z używaniem dlopen, zamiast odraczania rozwiązywania wywołań funkcji
do momentu pierwszego wywołania funkcji.

pochodzenie
Oznacza, że ​​obiekt może zawierać $ORIGIN.

relro
Utwórz nagłówek segmentu ELF „PT_GNU_RELRO” w obiekcie.

maksymalny-rozmiar-strony=wartość
Ustaw maksymalny rozmiar emulacji na wartość.

wspólny-rozmiar-strony=wartość
Ustaw typowy rozmiar emulacji strony na wartość.

rozmiar-stosu=wartość
Określ rozmiar stosu w segmencie ELF „PT_GNU_STACK”. Określenie zera spowoduje
przesłonić wszelkie domyślne tworzenie segmentów „PT_GNU_STACK” o rozmiarach niezerowych.

powiązanie
Zawsze generuj prefiks BND we wpisach PLT. Obsługiwane dla systemu Linux/x86_64.

Noextern-protected-data
Nie traktuj chronionego symbolu danych jako zewnętrznego podczas tworzenia biblioteki współdzielonej. Ten
opcja nadpisuje domyślny backend konsolidatora. Może służyć do obejścia nieprawidłowego
relokacje w stosunku do chronionych symboli danych generowanych przez kompilator. Aktualizacje na
chronione symbole danych przez inny moduł nie są widoczne dla wynikowego udostępnionego
Biblioteka. Obsługiwane dla i386 i x86-64.

call-nop=prefiks-addr
call-nop=prefiks-nop
call-nop=sufiks-nop
call-nop=prefiks-bajt
call-nop=suffix-bajt
Określ 1-bajtowe dopełnienie „NOP” podczas przekształcania połączenia pośredniego w połączenie lokalne
zdefiniowaną funkcję, foo, za pośrednictwem swojego gniazda GOT. call-nop=prefiks-addr generuje „0x67
zadzwoń do nas”. call-nop=prefiks-nop generuje "0x90 call foo". call-nop=sufiks-nop
generuje "call foo 0x90". call-nop=prefiks-bajt generuje "bajt wezwanie bla".
call-nop=suffix-bajt generuje "call foo bajt". Obsługiwane dla i386 i x86_64.

Inne słowa kluczowe są ignorowane w celu zapewnienia zgodności z systemem Solaris.

-( archiwum -)
--grupa-startowa archiwum --grupa końcowa
Pandemia archiwum powinna być listą plików archiwum. Mogą to być pliki jawne
nazwiska, lub -l Opcje.

Określone archiwa są przeszukiwane wielokrotnie, dopóki nie pojawią się nowe niezdefiniowane odniesienia
Utworzony. Zwykle archiwum jest przeszukiwane tylko raz w podanej kolejności
w wierszu poleceń. Jeśli symbol w tym archiwum jest potrzebny do rozwiązania niezdefiniowanego
symbol, do którego odwołuje się obiekt w archiwum, który pojawia się później w linii poleceń,
linker nie byłby w stanie rozwiązać tego odniesienia. Grupując archiwa,
wszystkie są przeszukiwane wielokrotnie, aż wszystkie możliwe odniesienia zostaną rozwiązane.

Korzystanie z tej opcji wiąże się ze znacznym kosztem wydajności. Najlepiej używać go tylko wtedy, gdy
istnieją nieuniknione cykliczne odniesienia między dwoma lub większą liczbą archiwów.

--akceptuj-nieznane-wejście-arch
--no-akceptuje-nieznane-arch-wejściowy
Mówi konsolidatorowi, aby zaakceptował pliki wejściowe, których architektura nie może zostać rozpoznana. ten
założenie jest takie, że użytkownik wie, co robi i celowo chce linkować
w tych nieznanych plikach wejściowych. To było domyślne zachowanie linkera, wcześniej
wydanie 2.14. Domyślnym zachowaniem od wersji 2.14 i nowszych jest odrzucanie takich danych wejściowych
pliki, a więc --akceptuj-nieznane-wejście-arch dodano opcję przywracania starego
zachowanie.

--w razie potrzeby
--nie-w razie potrzeby
Ta opcja wpływa na znaczniki ELF DT_NEEDED dla bibliotek dynamicznych wymienionych w poleceniu
wiersz po --w razie potrzeby opcja. Normalnie linker doda znacznik DT_NEEDED dla
każda biblioteka dynamiczna wymieniona w wierszu poleceń, niezależnie od tego, czy biblioteka
jest rzeczywiście potrzebne, czy nie. --w razie potrzeby powoduje, że znacznik DT_NEEDED jest emitowany tylko przez
biblioteka, która… at że punkt in die,en połączyć spełnia niesłaby niezdefiniowany symbol
odwołanie ze zwykłego pliku obiektowego lub, jeśli biblioteka nie zostanie znaleziona w DT_NEEDED
listy innych potrzebnych bibliotek, niesłabe, niezdefiniowane odniesienie do symbolu z innego
potrzebna biblioteka dynamiczna. Pliki obiektów lub biblioteki pojawiające się w wierszu poleceń po
dana biblioteka nie ma wpływu na to, czy biblioteka jest postrzegana jako potrzebna. To jest
podobne do zasad ekstrakcji plików obiektowych z archiwów. --nie-w razie potrzeby
przywraca domyślne zachowanie.

--dodaj-potrzebne
--nie trzeba dodawać
Te dwie opcje zostały odrzucone ze względu na podobieństwo ich nazw do
--w razie potrzeby dzięki --nie-w razie potrzeby opcje. Zostały zastąpione przez
--kopiuj-dt-potrzebne-wpisy dzięki --brak-kopii-dt-potrzebnych-wpisów.

-zapewniać keyword
Ta opcja jest ignorowana ze względu na zgodność z SunOS.

-Bdynamic
-dy
-call_shared
Link do bibliotek dynamicznych. Ma to znaczenie tylko na platformach, dla których udostępniono
obsługiwane są biblioteki. Ta opcja jest zwykle domyślna na takich platformach. ten
różne warianty tej opcji zapewniają kompatybilność z różnymi systemami. Możesz
użyj tej opcji wiele razy w wierszu poleceń: wpływa to na wyszukiwanie w bibliotece
-l następujące opcje.

-Bgrupa
Ustaw flagę „DF_1_GROUP” we wpisie „DT_FLAGS_1” w sekcji dynamicznej. Ten
powoduje, że linker środowiska uruchomieniowego obsługuje wyszukiwania w tym obiekcie, a jego zależności są
wykonywane tylko wewnątrz grupy. --nierozwiązane-symbole=zgłoś-wszystko jest dorozumiana. Ten
opcja ma znaczenie tylko na platformach ELF, które obsługują biblioteki współdzielone.

-Bstatyczny
-dn
-nieudostępnione
-statyczny
Nie łącz z bibliotekami współdzielonymi. Ma to znaczenie tylko na platformach, dla których
obsługiwane są biblioteki współdzielone. Różne warianty tej opcji dotyczą:
kompatybilność z różnymi systemami. Możesz użyć tej opcji wielokrotnie na
wiersz poleceń: wpływa na wyszukiwanie w bibliotece -l następujące opcje. Ten
opcja również implikuje --nierozwiązane-symbole=zgłoś-wszystko. Ta opcja może być używana z
-wspólny. Oznacza to, że tworzona jest biblioteka współdzielona, ​​ale wszystkie
odnośniki zewnętrzne biblioteki muszą być rozwiązane przez pobranie wpisów ze statycznych
biblioteki.

-Bsymboliczna
Tworząc bibliotekę współdzieloną, powiąż odniesienia do symboli globalnych z definicją
w ramach biblioteki współdzielonej, jeśli taka istnieje. Zwykle jest to możliwe w przypadku programu połączonego
względem biblioteki współdzielonej, aby nadpisać definicję w bibliotece współdzielonej. Ten
opcja może być również używana z --eksport-dynamika opcja podczas tworzenia stanowiska
niezależny plik wykonywalny, aby powiązać odniesienia do symboli globalnych z definicją w obrębie
plik wykonywalny. Ta opcja ma znaczenie tylko na platformach ELF, które obsługują współdzielone
biblioteki i niezależne od pozycji pliki wykonywalne.

-Funkcje symboliczne
Tworząc bibliotekę współdzieloną, powiąż odniesienia do symboli funkcji globalnych z
definicja w bibliotece dzielonej, jeśli taka istnieje. Ta opcja może być również używana z
--eksport-dynamika opcja, podczas tworzenia pliku wykonywalnego niezależnego od pozycji, do powiązania
odniesienia do globalnych symboli funkcji do definicji w pliku wykonywalnym. Ten
opcja ma sens tylko na platformach ELF, które obsługują biblioteki współdzielone i stanowisko
niezależne pliki wykonywalne.

--dynamic-lista=plik-listy-dynamicznej
Określ nazwę pliku listy dynamicznej do konsolidatora. Jest to zwykle używane, gdy
tworzenie bibliotek dzielonych w celu określenia listy globalnych symboli, do których odniesienia
nie powinny być powiązane z definicją w ramach biblioteki współdzielonej lub tworzeniem
dynamicznie dołączane pliki wykonywalne, aby określić listę symboli, które należy dodać do
tablica symboli w pliku wykonywalnym. Ta opcja ma sens tylko na platformach ELF
które obsługują biblioteki współdzielone.

Format listy dynamicznej jest taki sam jak węzeł wersji bez zakresu i węzła
Nazwa. Widzieć WERSJA po więcej informacji.

--dynamic-lista-danych
Dołącz wszystkie globalne symbole danych do listy dynamicznej.

--dynamic-lista-cpp-nowy
Podaj wbudowaną listę dynamiczną dla operatora C++ nowy i usuń. Jest to głównie przydatne
do budowania współdzielonej biblioteki libstdc++.

--dynamic-lista-cpp-typeinfo
Podaj wbudowaną dynamiczną listę do identyfikacji typu środowiska uruchomieniowego C++.

--sprawdź-sekcje
--no-check-sections
Pyta linkera nie aby sprawdzić adresy sekcji po ich przypisaniu, aby sprawdzić, czy
są jakieś nakładanie się. Zwykle linker wykona to sprawdzenie, a jeśli znajdzie
wszelkie nakładanie się spowoduje wyświetlenie odpowiednich komunikatów o błędach. Linker wie o tym i
uwzględnia przekroje w nakładkach. Domyślne zachowanie można przywrócić
za pomocą przełącznika wiersza poleceń --sprawdź-sekcje. Zwykle nie zachodzi nakładanie się sekcji
sprawdzone pod kątem relokacji linków. W takim przypadku możesz wymusić sprawdzenie, używając
--sprawdź-sekcje opcja.

--kopiuj-dt-potrzebne-wpisy
--brak-kopii-dt-potrzebnych-wpisów
Ta opcja wpływa na traktowanie bibliotek dynamicznych, do których odwołują się znaczniki DT_NEEDED
wewnątrz Biblioteki dynamiczne ELF wymienione w wierszu poleceń. Zwykle linker nie będzie
dodaj znacznik DT_NEEDED do wyjściowego pliku binarnego dla każdej biblioteki wymienionej w znaczniku DT_NEEDED
w wejściowej bibliotece dynamicznej. Z --kopiuj-dt-potrzebne-wpisy określone w poleceniu
wiersz, jednak wszystkie dynamiczne biblioteki, które po nim następują, będą miały swoje wpisy DT_NEEDED
dodany. Domyślne zachowanie można przywrócić za pomocą --brak-kopii-dt-potrzebnych-wpisów.

Ta opcja ma również wpływ na rozdzielczość symboli w bibliotekach dynamicznych.
Z --kopiuj-dt-potrzebne-wpisy Biblioteki dynamiczne wymienione w wierszu poleceń będą
przeszukiwane rekursywnie, podążając za ich znacznikami DT_NEEDED do innych bibliotek, w celu:
rozwiązuj symbole wymagane przez wyjściowy plik binarny. Jednak przy ustawieniu domyślnym
wyszukiwanie bibliotek dynamicznych, które po nim nastąpią, zatrzyma się wraz z biblioteką dynamiczną
samo. Żadne łącza DT_NEEDED nie będą przechodzić w celu rozwiązania symboli.

--cref
Wyprowadź tabelę porównawczą. Jeśli generowany jest plik mapy konsolidatora, krzyż
tabela referencyjna jest drukowana do pliku mapy. W przeciwnym razie jest drukowany na standardzie
wyjście.

Format tabeli jest celowo prosty, dzięki czemu może być łatwo przetwarzany przez
w razie potrzeby skrypt. Symbole są drukowane, posortowane według nazwy. Dla każdego symbolu
podana jest lista nazw plików. Jeśli symbol jest zdefiniowany, pierwszym wymienionym plikiem jest
lokalizacja definicji. Jeśli symbol jest zdefiniowany jako wartość wspólna to wszystkie pliki
gdzie to się dzieje, pojawiają się dalej. Wreszcie wszystkie pliki, które odwołują się do symbolu, to
katalogowany.

--nie-definiowane-wspólne
Ta opcja blokuje przypisywanie adresów do wspólnych symboli. Scenariusz
polecenie „INHIBIT_COMMON_ALLOCATION” ma ten sam efekt.

Pandemia --nie-definiowane-wspólne opcja pozwala oddzielić decyzję o przypisaniu adresów do
Wspólne symbole z wyboru typu pliku wyjściowego; w przeciwnym razie nie można przenieść
typ wyjścia wymusza przypisywanie adresów do wspólnych symboli. Za pomocą --nie-definiowane-wspólne
umożliwia przypisanie wspólnych symboli, do których istnieją odniesienia z biblioteki współdzielonej
adresy tylko w programie głównym. Eliminuje to niewykorzystaną zduplikowaną przestrzeń w
biblioteka współdzielona, ​​a także zapobiega wszelkim możliwym nieporozumieniom związanym z niewłaściwym rozwiązaniem
duplikuj, gdy istnieje wiele modułów dynamicznych ze specjalnymi ścieżkami wyszukiwania dla
rozdzielczość symbolu środowiska uruchomieniowego.

--defsym=symbol=wyrażenie
Utwórz globalny symbol w pliku wyjściowym, zawierający adres bezwzględny podany przez
wyrażenie. Możesz użyć tej opcji tyle razy, ile potrzeba, aby zdefiniować wiele
symbole w wierszu poleceń. Ograniczona forma arytmetyki jest obsługiwana dla
wyrażenie w tym kontekście: możesz podać stałą szesnastkową lub nazwę an
istniejący symbol lub użyj "+" i "-", aby dodać lub odjąć stałe szesnastkowe lub
symbolika. Jeśli potrzebujesz bardziej rozbudowanych wyrażeń, rozważ użycie polecenia linkera
język ze skryptu. Uwaga: między nimi nie powinno być spacji symbolThe
znak równości ("="), oraz wyrażenie.

--demangle[=styl]
--bez-demangle
Te opcje kontrolują, czy rozdzielić nazwy symboli w komunikatach o błędach i innych
wyjście. Kiedy linker otrzymuje polecenie oddzielenia, próbuje przedstawić nazwy symboli w
czytelny sposób: usuwa wiodące podkreślenia, jeśli są używane przez plik obiektowy
format i konwertuje zniekształcone nazwy symboli C++ na nazwy czytelne dla użytkownika. Różne
kompilatory mają różne style manglowania. Opcjonalny argument stylu deanglingu może:
być używany do wyboru odpowiedniego stylu deanglingu dla twojego kompilatora. Linker będzie
domyślnie deangle, chyba że zmienna środowiskowa COLLECT_NO_DEMANGLE jest ustawiony. Te
opcje mogą być użyte do zastąpienia wartości domyślnych.

-Ifilet
--dynamic-linker=filet
Ustaw nazwę dynamicznego linkera. Ma to znaczenie tylko podczas generowania
dynamicznie połączone pliki wykonywalne ELF. Domyślny linker dynamiczny jest zwykle poprawny;
nie używaj tego, chyba że wiesz, co robisz.

--no-dynamic-linker
Podczas tworzenia pliku wykonywalnego pomiń żądanie użycia dynamicznego linkera w
czas ładowania. Ma to znaczenie tylko w przypadku plików wykonywalnych ELF, które zawierają dynamic
relokacji i zwykle wymaga kodu punktu wejścia, który jest w stanie je przetworzyć
relokacje.

--fatal-ostrzeżenia
--brak-ostrzeżeń-śmiertelnych
Traktuj wszystkie ostrzeżenia jako błędy. Domyślne zachowanie można przywrócić za pomocą opcji
--brak-ostrzeżeń-śmiertelnych.

--force-exe-suffix
Upewnij się, że plik wyjściowy ma sufiks .exe.

Jeśli pomyślnie skompilowany, w pełni połączony plik wyjściowy nie zawiera pliku „.exe” ani „.dll”
przyrostka, ta opcja zmusza linker do skopiowania pliku wyjściowego do jednego o tej samej nazwie
z przyrostkiem „.exe”. Ta opcja jest przydatna podczas używania niezmodyfikowanych plików makefile Unix na
Host systemu Microsoft Windows, ponieważ niektóre wersje systemu Windows nie uruchomią obrazu, chyba że
kończy się sufiksem „.exe”.

--gc-sekcje
--no-gc-sections
Włącz odśmiecanie nieużywanych sekcji wejściowych. Jest ignorowany na celach, które nie
nie obsługują tej opcji. Domyślne zachowanie (niewykonywanie tych śmieci)
kolekcja) można przywrócić, określając --no-gc-sections w wierszu poleceń. Notatka
obsługiwane jest wyrzucanie śmieci dla celów formatu COFF i PE, ale
wdrożenie jest obecnie uważane za eksperymentalne.

--gc-sekcje decyduje, które sekcje wejściowe są używane, badając symbole i
relokacje. Sekcja zawierająca symbol wpisu i wszystkie sekcje zawierające
symbole niezdefiniowane w wierszu poleceń zostaną zachowane, podobnie jak sekcje zawierające
symbole, do których odwołują się obiekty dynamiczne. Pamiętaj, że podczas tworzenia bibliotek współdzielonych,
linker musi zakładać, że odwołuje się jakikolwiek widoczny symbol. Po tym początkowym zestawie
sekcje zostały określone, linker rekursywnie zaznacza dowolną sekcję jako użytą
do których odwołują się ich relokacje. Widzieć --wejście dzięki --nieokreślony.

Ta opcja może być ustawiona podczas wykonywania częściowego linku (włączona opcją -r). W tym
przypadek, że rdzeń przechowywanych symboli musi być wyraźnie określony przez an --wejście or
--nieokreślony lub komendą „ENTRY” w skrypcie konsolidatora.

--print-gc-sections
--no-print-gc-sections
Wymień wszystkie sekcje usunięte przez odśmiecanie. Lista jest drukowana na stderr.
Ta opcja jest skuteczna tylko wtedy, gdy odśmiecanie zostało włączone przez
--gc-sekcje) opcja. Domyślne zachowanie (nie wymienianie sekcji, które są
usunięte) można przywrócić, określając --no-print-gc-sections w wierszu poleceń.

--print-output-format
Wydrukuj nazwę domyślnego formatu wyjściowego (być może pod wpływem innej linii poleceń)
opcje). To jest ciąg, który pojawi się w skrypcie linkera „OUTPUT_FORMAT”
dowództwo.

--drukuj-wykorzystanie-pamięci
Drukuj używany rozmiar, całkowity rozmiar i używany rozmiar obszarów pamięci utworzonych za pomocą PAMIĘĆ
Komenda. Jest to przydatne w przypadku osadzonych celów, aby mieć szybki podgląd ilości wolnego
pamięć. Format danych wyjściowych ma jeden nagłówek i jeden wiersz na region. To jest
zarówno czytelne dla człowieka, jak i łatwe do przeanalizowania przez narzędzia. Oto przykład wyjścia:

Region pamięci Używany Rozmiar Region Rozmiar % wiek Używany
ROM: 256 KB 1 MB 25.00%
RAM: 32B 2GB 0.00%

--help
Wydrukuj podsumowanie opcji wiersza poleceń na standardowym wyjściu i zakończ.

--cel-pomoc
Wydrukuj podsumowanie wszystkich opcji specyficznych dla celu na standardowym wyjściu i wyjdź.

-Mapa=plik mapy
Wydrukuj mapę linków do pliku plik mapy. Zobacz opis -M opcja powyżej.

--brak-zachowania-pamięci
ld zwykle optymalizuje pod kątem szybkości w stosunku do użycia pamięci, buforując tablice symboli
pliki wejściowe w pamięci. Ta opcja mówi ld zamiast tego zoptymalizować wykorzystanie pamięci, przez
ponowne czytanie tablic symboli w razie potrzeby. Może to być wymagane, jeśli ld kończy się
miejsce w pamięci podczas łączenia dużego pliku wykonywalnego.

--brak-nieokreślony
-z defs
Zgłoś nierozwiązane odniesienia do symboli ze zwykłych plików obiektów. Odbywa się to, nawet jeśli
linker tworzy niesymboliczną bibliotekę współdzieloną. Przełącznik
--[nie-]allow-shlib-undefined kontroluje zachowanie zgłaszania nierozwiązanych
odniesienia znalezione w połączonych bibliotekach współdzielonych.

--zezwalaj na wiele definicji
-z muldef
Normalnie, gdy symbol jest zdefiniowany wiele razy, linker zgłosi fatal
błąd. Te opcje pozwalają na wiele definicji i zostanie użyta pierwsza definicja.

--allow-shlib-undefined
--no-allow-shlib-undefined
Zezwala lub nie zezwala na niezdefiniowane symbole w bibliotekach współdzielonych. Ten przełącznik jest podobny do
--brak-nieokreślony poza tym, że określa zachowanie, gdy niezdefiniowane symbole są
w bibliotece współdzielonej, a nie w zwykłym pliku obiektowym. Nie wpływa na to, jak
Obsługiwane są niezdefiniowane symbole w zwykłych plikach obiektowych.

Domyślnym zachowaniem jest zgłaszanie błędów dla dowolnych niezdefiniowanych symboli, do których odwołuje się
biblioteki współdzielone, jeśli linker jest używany do tworzenia pliku wykonywalnego, ale aby zezwolić
je, jeśli linker jest używany do tworzenia biblioteki współdzielonej.

Powody zezwalania na niezdefiniowane odniesienia do symboli w bibliotekach współdzielonych określone w
czas połączenia jest następujący:

· Biblioteka współdzielona określona w czasie łączenia może nie być taka sama jak ta, która jest
dostępne w czasie ładowania, więc symbol może być rzeczywiście rozpoznawalny w czasie ładowania.

· Istnieją pewne systemy operacyjne, np. BeOS i HPPA, gdzie niezdefiniowane symbole
biblioteki współdzielone są normalne.

Jądro BeOS na przykład łata biblioteki współdzielone w czasie ładowania, aby wybrać
którakolwiek funkcja jest najbardziej odpowiednia dla obecnej architektury. To jest
służy na przykład do dynamicznego wyboru odpowiedniej funkcji memset.

--no-nieokreślona-wersja
Normalnie, gdy symbol ma niezdefiniowaną wersję, linker zignoruje go. Ten
opcja nie zezwala na symbole z niezdefiniowaną wersją i zostanie wyświetlony błąd krytyczny
zamiast.

--default-symver
Utwórz i użyj domyślnej wersji symbolu (soname) dla niewersjonowanych eksportowanych symboli.

--default-imported-symver
Utwórz i użyj domyślnej wersji symbolu (soname) dla niewersjonowanych importowanych symboli.

--no-warn-mismatch
Normalnie ld zwróci błąd, jeśli spróbujesz połączyć ze sobą pliki wejściowe, które są
z jakiegoś powodu niedopasowane, być może dlatego, że zostały skompilowane dla innych
procesory lub dla różnych endianness. Ta opcja mówi ld że powinno
po cichu pozwalaj na takie możliwe błędy. Ta opcja powinna być używana tylko ostrożnie, w
przypadki, w których wykonałeś jakieś specjalne działania, które zapewniają, że błędy linkera są
nieodpowiednie.

--no-warn-search-niezgodność wyszukiwania
Normalnie ld wyświetli ostrzeżenie, jeśli znajdzie niekompatybilną bibliotekę podczas biblioteki
Szukaj. Ta opcja wycisza ostrzeżenie.

--brak-całego-archiwum
Wyłącz efekt --całe-archiwum opcja dla kolejnych plików archiwum.

--noinhibit-exec
Zachowaj wykonywalny plik wyjściowy, gdy jest nadal użyteczny. Zwykle linker
nie utworzy pliku wyjściowego, jeśli napotka błędy podczas procesu łączenia; to
kończy działanie bez zapisywania pliku wyjściowego, gdy wystąpi jakikolwiek błąd.

-nostdlib
Przeszukuj tylko katalogi bibliotek jawnie określone w wierszu poleceń. Biblioteka
katalogi określone w skryptach linkera (w tym skrypty linkera określone w
wiersza poleceń) są ignorowane.

--oformat=format wyjściowy
ld może być skonfigurowany do obsługi więcej niż jednego rodzaju pliku obiektowego. Jeżeli twój ld is
skonfigurowany w ten sposób, możesz użyć --format możliwość określenia formatu binarnego dla
wyjściowy plik obiektu. Nawet kiedy ld jest skonfigurowany do obsługi alternatywnego obiektu
formatów, zwykle nie musisz tego określać, ponieważ ld powinien być skonfigurowany do produkcji
jako domyślny format wyjściowy najbardziej typowy format na każdym komputerze. format wyjściowy jest
ciąg tekstowy, nazwa konkretnego formatu obsługiwanego przez biblioteki BFD. (Możesz
wymień dostępne formaty binarne za pomocą objdump -i.) Polecenie skryptu
„OUTPUT_FORMAT” może również określać format wyjściowy, ale ta opcja go zastępuje.

-ciasto
--pic-wykonywalny
Utwórz plik wykonywalny niezależny od pozycji. Jest to obecnie obsługiwane tylko w ELF
platformy. Pliki wykonywalne niezależne od pozycji są pod tym względem podobne do bibliotek współdzielonych
są one relokowane przez dynamiczny linker do wirtualnego adresu wybranego przez system operacyjny
je (które mogą się różnić w zależności od wywołania). Jak normalne dynamicznie połączone pliki wykonywalne
mogą być wykonywane, a symbole zdefiniowane w pliku wykonywalnym nie mogą być nadpisane przez
biblioteki współdzielone.

-qmagic
Ta opcja jest ignorowana ze względu na zgodność z systemem Linux.

-Qy Ta opcja jest ignorowana ze względu na zgodność z SVR4.

--zrelaksować się
--bez relaksu
Opcja z efektami zależnymi od maszyny. Ta opcja jest obsługiwana tylko w kilku
Cele.

Na niektórych platformach --zrelaksować się opcja wykonuje globalne optymalizacje specyficzne dla celu
które stają się możliwe, gdy linker rozwiązuje adresowanie w programie, takie jak
rozluźnienie trybów adresowania, synteza nowych instrukcji, wybór krótszej wersji
aktualne instrukcje i łączenie wartości stałych.

Na niektórych platformach te globalne optymalizacje czasu łącza mogą spowodować symboliczne debugowanie
wynikowy plik wykonywalny jest niemożliwy. Wiadomo, że tak jest w przypadku Matsushita
Rodzina procesorów MN10200 i MN10300.

Na platformach, na których nie jest to obsługiwane, --zrelaksować się jest akceptowana, ale ignorowana.

Na platformach, gdzie --zrelaksować się jest akceptowana opcja --bez relaksu może być użyty do wyłączenia
funkcja.

--zachowaj-plik-symboli=filename
Zachować tylko symbole wymienione w pliku filename, odrzucając wszystkie inne. filename
to po prostu plik płaski, z jedną nazwą symbolu w wierszu. Ta opcja jest szczególnie
przydatne w środowiskach (takich jak VxWorks), w których znajduje się duża globalna tablica symboli
gromadzone stopniowo, aby oszczędzać pamięć w czasie wykonywania.

--zachowaj-plik-symboli robi nie odrzuć niezdefiniowane symbole lub symbole potrzebne do
relokacje.

Możesz tylko określić --zachowaj-plik-symboli raz w linii poleceń. Zastępuje -s
dzięki -S.

-rścieżka=reż
Dodaj katalog do ścieżki wyszukiwania biblioteki wykonawczej. Jest to używane podczas łączenia ELF
wykonywalny z udostępnionymi obiektami. Wszystko -rpath argumenty są łączone i przekazywane do
konsolidator środowiska uruchomieniowego, który używa ich do lokalizowania obiektów udostępnionych w czasie wykonywania. ten -rpath
opcja jest również używana podczas lokalizowania obiektów współdzielonych, które są potrzebne obiektom współdzielonym
wyraźnie zawarte w linku; zobacz opis -rpath-link opcja. Gdyby
-rpath nie jest używany podczas łączenia pliku wykonywalnego ELF, zawartości środowiska
zmienna "LD_RUN_PATH" będzie używana, jeśli jest zdefiniowana.

Pandemia -rpath opcja może być również użyta w SunOS. Domyślnie w SunOS linker:
utworzyć ścieżkę wyszukiwania w czasie wykonywania ze wszystkich -L opcje są podane. Jeśli -rpath opcja
jest używany, ścieżka wyszukiwania środowiska uruchomieniowego zostanie utworzona wyłącznie przy użyciu -rpath Opcje
ignorując -L opcje. Może to być przydatne podczas korzystania z gcc, które dodaje wiele -L
opcje, które mogą znajdować się w systemach plików podłączonych przez NFS.

Dla zgodności z innymi linkerami ELF, jeśli -R po opcji następuje katalog
nazwa, a nie nazwa pliku, jest traktowana jako -rpath opcja.

-rpath-link=reż
Podczas korzystania z ELF lub SunOS jedna biblioteka współdzielona może wymagać innej. Dzieje się tak, gdy
Link "ld -shared" zawiera bibliotekę współdzieloną jako jeden z plików wejściowych.

Kiedy linker napotka taką zależność podczas wykonywania niewspółdzielonej, nierelokowalnej
link, automatycznie spróbuje zlokalizować wymaganą bibliotekę współdzieloną i ją uwzględnić
w linku, jeśli nie jest wyraźnie podany. W takim przypadku -rpath-link opcja
określa pierwszy zestaw katalogów do przeszukania. ten -rpath-link opcja może określać
sekwencja nazw katalogów przez określenie listy nazw oddzielonych
dwukropki lub pojawiając się wiele razy.

Ta opcja powinna być używana z ostrożnością, ponieważ zastępuje ścieżkę wyszukiwania, która może mieć
zostały ciężko skompilowane we wspólną bibliotekę. W takim przypadku można użyć
przypadkowo inną ścieżkę wyszukiwania niż zrobiłby linker środowiska uruchomieniowego.

Konsolidator używa następujących ścieżek wyszukiwania, aby zlokalizować wymagane biblioteki współdzielone:

1. Wszelkie katalogi określone przez -rpath-link Opcje.

2. Wszelkie katalogi określone przez -rpath opcje. Różnica pomiędzy -rpath dzięki
-rpath-link czy katalogi są określone przez -rpath opcje są zawarte w
wykonywalny i używany w czasie wykonywania, podczas gdy -rpath-link opcja jest skuteczna tylko
w czasie połączenia. Badawczy -rpath w ten sposób jest obsługiwany tylko przez natywne linkery i
środki sieciujące, które zostały skonfigurowane z --z-sysroot opcja.

3. W systemie ELF, dla natywnych linkerów, jeśli -rpath dzięki -rpath-link opcje były
nieużywane, przeszukaj zawartość zmiennej środowiskowej „LD_RUN_PATH”.

4. W systemie SunOS, jeśli -rpath opcja nie została użyta, przeszukaj dowolne określone katalogi
za pomocą -L Opcje.

5. Aby znaleźć natywny linker, przeszukaj zawartość zmiennej środowiskowej
„LD_LIBRARY_PATH”.

6. Dla natywnego linkera ELF, katalogi w "DT_RUNPATH" lub "DT_RPATH" współdzielonego
biblioteki są przeszukiwane pod kątem potrzebnych bibliotek współdzielonych. Wpisy „DT_RPATH” to
ignorowane, jeśli istnieją wpisy "DT_RUNPATH".

7. Domyślne katalogi, zwykle / lib dzięki / Usr / lib.

8. Dla natywnego linkera w systemie ELF, jeśli plik /etc/ld.so.conf istnieje, lista
katalogów znalezionych w tym pliku.

Jeśli wymagana biblioteka współdzielona nie zostanie znaleziona, linker wyśle ​​ostrzeżenie i
kontynuuj z linkiem.

-wspólny
-Bshared
Utwórz bibliotekę współdzieloną. Jest to obecnie obsługiwane tylko w ELF, XCOFF i SunOS
platformy. W SunOS, linker automatycznie utworzy bibliotekę współdzieloną, jeśli: -e
opcja nie jest używana, aw łączu znajdują się niezdefiniowane symbole.

--sortuj-wspólne
--sort-common=rosnąco
--sort-common=malejąco
Ta opcja mówi ld aby posortować typowe symbole według wyrównania rosnąco lub
w kolejności malejącej, gdy umieszcza je w odpowiednich sekcjach wyjściowych. Symbol
brane pod uwagę dopasowania są szesnastobajtowe lub większe, ośmiobajtowe, czterobajtowe, dwubajtowe i
jednobajtowy. Ma to na celu zapobieganie przerwom między symbolami z powodu ograniczeń wyrównania. Jeśli nie
podawana jest kolejność sortowania, a następnie przyjmowana jest kolejność malejąca.

--sort-sekcja=nazwa
Ta opcja zastosuje „SORT_BY_NAME” do wszystkich wzorców sekcji z symbolami wieloznacznymi w linkerze
skrypt.

--sortuj-przekrój=wyrównanie
Ta opcja zastosuje „SORT_BY_ALIGNMENT” do wszystkich wzorców sekcji z symbolami wieloznacznymi w
skrypt konsolidatora.

--podziel-według-pliku[=rozmiar]
Podobny do --split-by-reloc ale tworzy nową sekcję wyjściową dla każdego pliku wejściowego, gdy
rozmiar został osiągnięty. rozmiar domyślnie przyjmuje rozmiar 1, jeśli nie zostanie podany.

--podział-według-relokacji[=liczyć]
Próbuje utworzyć dodatkowe sekcje w pliku wyjściowym, aby żadna pojedyncza sekcja wyjściowa w
plik zawiera więcej niż liczyć relokacje. Jest to przydatne przy generowaniu ogromnych
relokowalne pliki do pobrania do niektórych jąder czasu rzeczywistego za pomocą obiektu COFF
format pliku; ponieważ COFF nie może reprezentować więcej niż 65535 relokacji w jednym
Sekcja. Zauważ, że to nie zadziała z formatami plików obiektowych, które nie
wspierać dowolne sekcje. Linker nie podzieli poszczególnych sekcji wejściowych
do redystrybucji, więc jeśli pojedyncza sekcja wejściowa zawiera więcej niż liczyć przeprowadzki
jedna sekcja wyjściowa będzie zawierać tyle relokacji. liczyć domyślna wartość
10.

--statystyki
Oblicz i wyświetlaj statystyki dotyczące działania linkera, takie jak wykonanie
wykorzystanie czasu i pamięci.

--sysroot=katalog
Zastosowanie katalog jako lokalizację sysroot, zastępując domyślne ustawienie czasu konfiguracji.
Ta opcja jest obsługiwana tylko przez linkery, które zostały skonfigurowane przy użyciu --z-sysroot.

--tradycyjny-format
W przypadku niektórych celów wynik ld różni się pod pewnymi względami od wyników niektórych
istniejący linker. Ten przełącznik żąda ld używać zamiast tego tradycyjnego formatu.

Na przykład w SunOS ld łączy zduplikowane wpisy w tabeli ciągów symboli. Ten
może zmniejszyć rozmiar pliku wyjściowego z pełnymi informacjami debugowania o ponad 30
procent. Niestety, program „dbx” SunOS nie może odczytać powstałego programu
("gdb" nie ma problemu). ten --tradycyjny-format przełącznik mówi ld nie łączyć
zduplikowane wpisy.

--sekcji-początek=nazwa sekcji=org
Zlokalizuj sekcję w pliku wyjściowym pod adresem bezwzględnym podanym przez org. Możesz użyć
tę opcję tyle razy, ile potrzeba, aby zlokalizować wiele sekcji w poleceniu
Linia. org musi być jedną szesnastkową liczbą całkowitą; dla kompatybilności z innymi linkerami,
możesz pominąć wiodące 0x zwykle kojarzone z wartościami szesnastkowymi. Uwaga: tam
nie powinno być spacji między nazwa sekcji, znak równości ("="), oraz org.

-Tbss=org
-Tdane=org
-Ttekst=org
Taki sam jak --sekcja-początek, z ".bss", ".data" lub ".text" jako nazwa sekcji.

-Ttext-segment=org
Podczas tworzenia pliku wykonywalnego ELF ustawi adres pierwszego bajtu tekstu
Segment.

-Trodata-segment=org
Podczas tworzenia obiektu wykonywalnego lub udostępnionego ELF dla celu, w którym dane tylko do odczytu
jest we własnym segmencie oddzielonym od tekstu wykonywalnego, ustawi adres
pierwszy bajt segmentu danych tylko do odczytu.

-Tldata-segment=org
Podczas tworzenia pliku wykonywalnego lub obiektu współdzielonego ELF dla modelu pamięci x86-64, to
ustawi adres pierwszego bajtu segmentu ldata.

--nierozwiązane-symbole=metoda
Określ, jak obsługiwać nierozwiązane symbole. Istnieją cztery możliwe wartości dla
metoda:

ignorować wszystko
Nie zgłaszaj żadnych nierozwiązanych symboli.

raport-wszystko
Zgłoś wszystkie nierozwiązane symbole. To jest ustawienie domyślne.

ignorowanie-w-plikach-obiektowych
Zgłoś nierozwiązane symbole zawarte w bibliotekach współdzielonych, ale zignoruj ​​je
jeśli pochodzą ze zwykłych plików obiektowych.

ignorowanie-w-współdzielonych bibliotekach
Zgłoś nierozwiązane symbole pochodzące ze zwykłych plików obiektowych, ale zignoruj ​​je, jeśli
pochodzą z bibliotek współdzielonych. Może to być przydatne podczas tworzenia dynamicznego
binarny i wiadomo, że wszystkie biblioteki współdzielone, do których powinien się odwoływać
są zawarte w wierszu poleceń konsolidatora.

Zachowanie samych bibliotek współdzielonych może być również kontrolowane przez
--[nie-]allow-shlib-undefined opcja.

Normalnie linker wygeneruje komunikat o błędzie dla każdego zgłoszonego nierozwiązanego symbolu
ale opcja --ostrzegaj-nierozwiązane-symbole może zmienić to na ostrzeżenie.

--dll-pełny
--gadatliwy[=LICZBA]
Wyświetl numer wersji dla ld i wymień obsługiwane emulacje konsolidatora. Wyświetlacz
które pliki wejściowe mogą i nie mogą być otwierane. Wyświetl skrypt linkera używany przez
linker. Jeśli opcjonalne LICZBA argument > 1, status symbolu wtyczki również będzie
wystawiany.

--wersja-skryptu=wersja-skryptu
Podaj nazwę skryptu wersji do konsolidatora. Jest to zwykle używane, gdy
tworzenie bibliotek współdzielonych w celu określenia dodatkowych informacji o wersji
hierarchia tworzonej biblioteki. Ta opcja jest w pełni obsługiwana tylko w ELF
platformy obsługujące biblioteki współdzielone; zobaczyć WERSJA. Jest częściowo obsługiwany na
Platformy PE, które mogą używać skryptów wersji do filtrowania widoczności symboli w automatycznym eksporcie
tryb: dowolne symbole zaznaczone miejscowy w wersji skrypt nie zostanie wyeksportowany.

--ostrzegaj-wspólne
Ostrzegaj, gdy wspólny symbol jest połączony z innym powszechnym symbolem lub symbolem
definicja. Linkery uniksowe pozwalają na tę nieco niechlujną praktykę, ale na niektórych linkery
inne systemy operacyjne nie. Ta opcja pozwala znaleźć potencjalne problemy
od łączenia symboli globalnych. Niestety, niektóre biblioteki C stosują tę praktykę, więc
możesz otrzymać ostrzeżenia dotyczące symboli w bibliotekach, jak również w twoich programach.

Istnieją trzy rodzaje symboli globalnych, zilustrowane tutaj przykładami w języku C:

int i = 1;
Definicja, która znajduje się w zainicjowanej sekcji danych pliku wyjściowego.

zewnętrzny int i;
Niezdefiniowane odniesienie, które nie przydziela miejsca. Musi być albo
definicja lub wspólny symbol dla zmiennej gdzieś.

int i;
Wspólny symbol. Jeśli istnieje tylko (jeden lub więcej) wspólnych symboli dla zmiennej,
trafia do niezainicjowanego obszaru danych pliku wyjściowego. Linker łączy się
wiele wspólnych symboli dla tej samej zmiennej w jeden symbol. Jeśli są
o różnych rozmiarach, wybiera największy rozmiar. Łącznik zmienia wspólny symbol
do deklaracji, jeśli istnieje definicja tej samej zmiennej.

Pandemia --ostrzegaj-wspólne opcja może generować pięć rodzajów ostrzeżeń. Każde ostrzeżenie składa się z
para linii: pierwsza opisuje napotkany symbol, a druga
opisuje poprzedni symbol napotkany o tej samej nazwie. Jeden lub oba z nich
symbole będą wspólnym symbolem.

1. Przekształcenie wspólnego symbolu w odniesienie, ponieważ istnieje już definicja
dla symbolu.

( ): ostrzeżenie: wspólne dla ` '
przesłonięte z definicji
( ): ostrzeżenie: tutaj zdefiniowano

2. Przekształcenie wspólnego symbolu w odniesienie, ponieważ późniejsza definicja
napotkano symbol. To jest to samo, co w poprzednim przypadku, z tą różnicą, że
symbole występują w innej kolejności.

( ): ostrzeżenie: definicja ` '
nadrzędne wspólne
( ): ostrzeżenie: wspólne jest tutaj

3. Scalanie wspólnego symbolu z poprzednim wspólnym symbolem o tej samej wielkości.

( ): ostrzeżenie: wiele wspólnych
z ` '
( ): ostrzeżenie: poprzedni wspólny jest tutaj

4. Scalanie wspólnego symbolu z poprzednim większym wspólnym symbolem.

( ): ostrzeżenie: wspólne dla ` '
przesłonięte przez większe wspólne
( ): ostrzeżenie: większe wspólne jest tutaj

5. Scalanie wspólnego symbolu z poprzednim mniejszym wspólnym symbolem. to jest to samo
jak w poprzednim przypadku, z tą różnicą, że symbole występują w innym
zamówienie.

( ): ostrzeżenie: wspólne dla ` '
nadrzędny mniejszy wspólny
( ): ostrzeżenie: mniejszy wspólny jest tutaj

--warn-constructors
Ostrzegaj, jeśli używane są jakiekolwiek globalne konstruktory. Jest to przydatne tylko w przypadku kilku plików obiektowych
formaty. W przypadku formatów takich jak COFF lub ELF, linker nie może wykryć użycia global
konstruktorzy.

--warn-multi-gp
Ostrzegaj, jeśli w pliku wyjściowym jest wymaganych wiele wartości wskaźnika globalnego. To jest tylko
ma znaczenie dla niektórych procesorów, takich jak Alpha. W szczególności niektóre procesory
umieść stałe o dużej wartości w specjalnej sekcji. Specjalny rejestr (globalny
wskaźnik) wskazuje na środek tej sekcji, aby można było wczytać stałe
efektywnie poprzez tryb adresowania względnego rejestru bazowego. Ponieważ przesunięcie w podstawie-
tryb względny rejestru jest stały i stosunkowo mały (np. 16 bitów), co ogranicza
maksymalna wielkość puli stałej. Dlatego w dużych programach często konieczne jest:
użyj wielu globalnych wartości wskaźnika, aby móc zaadresować wszystkie możliwe
stałe. Ta opcja powoduje wyświetlenie ostrzeżenia za każdym razem, gdy wystąpi ten przypadek.

--ostrzegaj raz
Ostrzegaj tylko raz dla każdego niezdefiniowanego symbolu, a nie raz dla modułu, który odnosi się do
to.

--warn-section-align
Ostrzegaj, jeśli adres sekcji wyjściowej został zmieniony z powodu wyrównania. Zazwyczaj
wyrównanie zostanie ustawione przez sekcję wejściową. Adres zostanie zmieniony tylko wtedy, gdy
nie określono wyraźnie; to znaczy, jeśli polecenie "SECTIONS" nie określa początku
adres sekcji.

--warn-shared-textrel
Ostrzegaj, jeśli konsolidator dodaje DT_TEXTREL do obiektu udostępnionego.

--ostrzegaj-alternatywny-em
Ostrzegaj, jeśli obiekt ma alternatywny kod maszynowy ELF.

--ostrzegaj-nierozwiązane-symbole
Jeśli linker będzie zgłaszał nierozwiązany symbol (zobacz opcję
--nierozwiązane-symbole) zwykle wygeneruje błąd. Ta opcja sprawia, że
zamiast tego wygenerować ostrzeżenie.

--symbole nierozwiązanych błędów
Przywraca to domyślne zachowanie linkera polegające na generowaniu błędów podczas raportowania
nierozwiązane symbole.

--całe-archiwum
Dla każdego archiwum wymienionego w wierszu poleceń po --całe-archiwum opcja,
dołącz każdy plik obiektowy w archiwum w łączu, zamiast przeszukiwać
archiwum dla wymaganych plików obiektowych. Jest to zwykle używane do przekształcenia pliku archiwum
do biblioteki współdzielonej, wymuszając włączenie każdego obiektu do wynikowej biblioteki współdzielonej
Biblioteka. Ta opcja może być użyta więcej niż raz.

Dwie uwagi dotyczące korzystania z tej opcji z gcc: Po pierwsze, gcc nie wie o tej opcji,
więc musisz użyć -Wl,-całe-archiwum. Po drugie, nie zapomnij użyć
-Wl,-brak-całego-archiwum po Twojej liście archiwów, ponieważ gcc doda własną listę
archiwów do Twojego linku i możesz nie chcieć, aby ta flaga również na nie wpływała.

--wrap=symbol
Użyj funkcji owijarki dla symbol. Wszelkie niezdefiniowane odniesienia do symbol zostanie rozwiązany
zawijać_symbol". Wszelkie niezdefiniowane odniesienia do „__real_symbol" zostanie rozwiązany
symbol.

Może to służyć do zapewnienia opakowania dla funkcji systemu. Funkcja owijarki
powinien nazywać się „__wrap_symbol". Jeśli chce wywołać funkcję systemową, powinien:
zadzwoń „__real_symbol".

Oto trywialny przykład:

próżnia *
__wrap_malloc (rozmiar_t c)
{
printf ("malloc wywołany z %zu\n", c);
zwróć __real_malloc (c);
}

Jeśli połączysz inny kod z tym plikiem za pomocą --zawinąć malloc, następnie wszystkie wywołania „malloc”
zamiast tego wywoła funkcję "__wrap_malloc". Wywołanie „__real_malloc” w
„__wrap_malloc” wywoła prawdziwą funkcję „malloc”.

Możesz również udostępnić funkcję „__real_malloc”, aby linki bez
--zawinąć opcja się powiedzie. Jeśli to zrobisz, nie powinieneś umieszczać definicji
„__real_malloc” w tym samym pliku co „__wrap_malloc”; jeśli tak, asembler może:
Rozwiąż wywołanie, zanim linker będzie miał szansę owinąć je w „malloc”.

--eh-frame-hdr
Żądaj utworzenia sekcji „.eh_frame_hdr” i nagłówka segmentu ELF „PT_GNU_EH_FRAME”.

--no-ld-generated-unwind-info
Poproś o utworzenie „.eh_frame” informacji o rozwinięciu dla sekcji kodu wygenerowanego przez linker, takich jak
PLT. Ta opcja jest domyślnie włączona, jeśli obsługiwane są informacje o rozwijaniu wygenerowane przez linker.

--enable-new-dtags
--wyłącz-nowe-dtags
Ten linker może tworzyć nowe znaczniki dynamiczne w ELF. Ale starsze systemy ELF mogą nie
zrozumieć ich. Jeśli określisz --enable-new-dtags, nowe tagi dynamiczne będą
utworzone w razie potrzeby, a starsze tagi dynamiczne zostaną pominięte. Jeśli określisz
--wyłącz-nowe-dtags, nie zostaną utworzone żadne nowe tagi dynamiczne. Domyślnie nowa dynamika
tagi nie są tworzone. Pamiętaj, że te opcje są dostępne tylko w systemach ELF.

--rozmiar-hash=numer
Ustaw domyślny rozmiar tablic mieszających linkera na liczbę pierwszą bliską numer.
Zwiększenie tej wartości może skrócić czas potrzebny linkerowi na wykonanie swojego
zadań, kosztem zwiększenia wymagań pamięci linkera. podobnie
zmniejszenie tej wartości może zmniejszyć wymagania dotyczące pamięci kosztem szybkości.

--styl-hash=styl
Ustaw typ tablicy mieszającej linkera. styl może być „sysv” dla klasycznego ELF
sekcja „.hash”, „gnu” dla nowego stylu GNU sekcja „.gnu.hash” lub „oba” dla obu
klasyczne tablice haszujące ELF „.hash” i nowy styl GNU „.gnu.hash”. Wartość domyślna to „sysv”.

--compress-debug-sections=brak
--compress-debug-sections=zlib
--compress-debug-sections=zlib-gnu
--compress-debug-sections=zlib-gabi
Na platformach ELF opcje te kontrolują sposób kompresji sekcji debugowania DWARF przy użyciu
zlib. --compress-debug-sections=brak nie kompresuje sekcji debugowania DWARF.
--compress-debug-sections=zlib-gnu kompresuje sekcje debugowania DWARF i zmienia nazwę debugowania
nazwy sekcji na początek .zdebug zamiast .odpluskwić. --compress-debug-sections=zlib
dzięki --compress-debug-sections=zlib-gabi kompresuj sekcje debugowania DWARF za pomocą
SHF_COMPRESSED z ELF ABI. Domyślne zachowanie różni się w zależności od
zaangażowany cel i opcje konfiguracji użyte do zbudowania łańcucha narzędzi. Domyślny
można określić, badając dane wyjściowe z linkera --help opcja.

--zmniejszenie-narzutów-pamięci
Ta opcja zmniejsza wymagania dotyczące pamięci w ld runtime kosztem linkowania
prędkość. Zostało to wprowadzone w celu wybrania starego algorytmu O(n^2) dla pliku mapy połączeń
generacji, a nie nowego algorytmu O(n), który wykorzystuje około 40% więcej pamięci dla
przechowywanie symboli.

Innym efektem tego przełącznika jest ustawienie domyślnego rozmiaru tablicy mieszającej na 1021, co
ponownie oszczędza pamięć kosztem wydłużenia czasu działania konsolidatora. To nie jest zrobione
jednak jeśli --rozmiar skrótu został użyty przełącznik.

Pandemia --zmniejszenie-narzutów-pamięci przełącznik może być również używany do włączania innych kompromisów w
przyszłe wersje konsolidatora.

--id-kompilacji
--id-kompilacji=styl
Poproś o utworzenie sekcji notatek ELF „.note.gnu.build-id” lub COFF „.buildid”
Sekcja. Treść notatki to unikalne bity identyfikujące ten połączony plik.
styl może być „uuid”, aby użyć 128 losowych bitów, „sha1”, aby użyć 160-bitowego skrótu SHA1 na
normatywne części zawartości wyjściowej, „md5”, aby użyć 128-bitowego skrótu MD5 na
normatywne części zawartości wyjściowej lub „0xciąg heksadecymalny” użyć wybranego ciągu bitów
określony jako parzysta liczba cyfr szesnastkowych (znaki "-" i ":" między
pary cyfr są ignorowane). Gdyby styl jest pominięte, używane jest „sha1”.

Style „md5” i „sha1” tworzą identyfikator, który jest zawsze taki sam w
identyczny plik wyjściowy, ale będzie unikalny wśród wszystkich nieidentycznych plików wyjściowych. To jest
nie ma być porównywana jako suma kontrolna zawartości pliku. Połączony plik może:
mogą zostać zmienione później przez inne narzędzia, ale ciąg bitów ID kompilacji identyfikujący oryginał
połączony plik nie zmienia się.

Przekazanie „brak” dla styl wyłącza to ustawienie we wszystkich opcjach "--build-id" wcześniej
wiersz poleceń.

Łącznik i386 PE obsługuje -wspólny opcja, która powoduje, że wyjście jest a
biblioteka połączona dynamicznie (DLL) zamiast normalnego pliku wykonywalnego. Powinieneś nazwać
wypisz "*.dll", gdy używasz tej opcji. Ponadto linker w pełni obsługuje
standardowe pliki "*.def", które można określić w wierszu poleceń konsolidatora jak obiekt
plik (w rzeczywistości powinien poprzedzać archiwa, z których eksportuje symbole, aby upewnić się, że zostaną pobrane
dołączony, tak jak normalny plik obiektowy).

Oprócz opcji wspólnych dla wszystkich celów, linker i386 PE obsługuje dodatkowe
opcje wiersza poleceń, które są specyficzne dla celu i386 PE. Opcje, które przyjmują wartości
mogą być oddzielone od ich wartości spacją lub znakiem równości.

--dodaj-stdcall-alias
Jeśli podano, symbole z sufiksem stdcall (@nn) zostaną wyeksportowane bez zmian, a także z
sufiks pozbawiony. [Ta opcja jest specyficzna dla docelowego portu i386 PE linkera]

--plik-podstawowy filet
Zastosowanie filet jako nazwę pliku, w którym mają zostać zapisane adresy bazowe wszystkich
relokacje potrzebne do generowania bibliotek DLL z dlltool. [To jest specyficzny dla i386 PE
opcja]

--dll
Utwórz bibliotekę DLL zamiast zwykłego pliku wykonywalnego. Możesz również użyć -wspólny lub podaj
"LIBRARY" w podanym pliku ".def". [Ta opcja jest specyficzna dla docelowego i386 PE
port linkera]

--enable-long-section-names
--wyłącz długie nazwy sekcji
Warianty PE formatu obiektu COFF dodają rozszerzenie, które pozwala na użycie
nazwy sekcji dłuższe niż osiem znaków, normalny limit dla COFF. Domyślnie,
te nazwy są dozwolone tylko w plikach obiektowych, ponieważ w pełni połączone obrazy wykonywalne nie
nosić tablicę ciągów COFF wymaganą do obsługi dłuższych nazw. Jako rozszerzenie GNU,
można zezwolić na ich użycie również w wykonywalnych obrazach lub (prawdopodobnie
bezsensownie!) nie zezwalaj na to w plikach obiektowych, używając tych dwóch opcji. Plik wykonywalny
obrazy generowane z tymi długimi nazwami odcinków są nieco niestandardowe, niosąc jako
robią tablicę ciągów i mogą generować mylące dane wyjściowe, gdy są sprawdzane za pomocą innych niż GNU
Narzędzia obsługujące środowisko PE, takie jak przeglądarki plików i zrzutniki. Jednak GDB opiera się na wykorzystaniu
Długie nazwy sekcji PE, aby znaleźć sekcje informacji debugowania Dwarf-2 w pliku wykonywalnym
obraz w czasie wykonywania, a więc jeśli żadna opcja nie jest określona w wierszu poleceń, ld będzie
włączyć długie nazwy sekcji, nadpisując domyślne i poprawne technicznie zachowanie,
gdy wykryje obecność informacji debugowania podczas łączenia obrazu wykonywalnego i
nie usuwanie symboli. [Ta opcja jest prawidłowa dla wszystkich docelowych portów linkera PE]

--enable-stdcall-fixup
--wyłącz-stdcall-fixup
Jeśli łącze znajdzie symbol, którego nie może rozwiązać, spróbuje wykonać „rozmyte
linkowanie”, szukając innego zdefiniowanego symbolu, który różni się tylko formatem
symbol name (cdecl vs stdcall) i rozwiąże ten symbol, łącząc się z dopasowaniem.
Na przykład niezdefiniowany symbol „_foo” może być powiązany z funkcją „_foo@12”, lub
niezdefiniowany symbol "_bar@16" może być powiązany z funkcją "_bar". Kiedy
linker to robi, wyświetla ostrzeżenie, ponieważ normalnie powinien się nie połączyć,
ale czasami import bibliotek wygenerowanych z zewnętrznych bibliotek dll może wymagać tej funkcji
być użytecznym. Jeśli określisz --enable-stdcall-fixup, ta funkcja jest w pełni włączona
a ostrzeżenia nie są drukowane. Jeśli określisz --wyłącz-stdcall-fixup, ta funkcja to
wyłączone i takie niezgodności są uważane za błędy. [Ta opcja jest specyficzna dla
docelowy port i386 PE linkera]

--lider-podkreślenie
--bez wiodącego podkreślenia
Dla większości celów domyślnym prefiksem symbolu jest podkreślenie i jest zdefiniowany w miejscu docelowym
opis. Dzięki tej opcji można wyłączyć/włączyć domyślne podkreślenie
przedrostek symbolu.

--eksportuj-wszystkie-symbole
Jeśli zostanie podany, wszystkie globalne symbole w obiektach użytych do zbudowania biblioteki DLL zostaną wyeksportowane przez
DLL. Zwróć uwagę, że jest to ustawienie domyślne, jeśli inaczej nie byłoby żadnych eksportów
symbolika. Gdy symbole są eksportowane jawnie za pośrednictwem plików DEF lub eksportowane niejawnie
poprzez atrybuty funkcji, domyślnie nie eksportować niczego innego, chyba że ta opcja
jest podawany. Zwróć uwagę, że symbole "DllMain@12", "DllEntryPoint@0",
„DllMainCRTStartup@12” i „impure_ptr” nie zostaną automatycznie wyeksportowane. Także,
symbole importowane z innych bibliotek DLL nie będą ponownie eksportowane, podobnie jak symbole określające
wewnętrzny układ biblioteki DLL, taki jak te zaczynające się od „_head_” lub kończące się na
"_ja nazywam". Ponadto żadnych symboli z „libgcc”, „libstd++”, „libmingw32” lub
"crtX.o" zostanie wyeksportowany. Symbole, których nazwy zaczynają się od „__rtti_” lub „__builtin_”
nie zostaną wyeksportowane, aby pomóc w przypadku bibliotek DLL C++. Wreszcie istnieje obszerna lista
cygwin-prywatne symbole, które nie są eksportowane (oczywiście dotyczy to podczas budowania)
Biblioteki DLL dla celów cygwin). Te wykluczenia cygwin to: "_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” i „środowisko”. [Ta opcja jest specyficzna dla docelowego i386 PE
port linkera]

--wyklucz-symbole symbol,symbol, ...
Określa listę symboli, które nie powinny być automatycznie eksportowane. Symbol
nazwy mogą być oddzielone przecinkami lub dwukropkami. [Ta opcja jest specyficzna dla i386 PE
docelowy port linkera]

--wyklucz-wszystkie-symbole
Określa, że ​​żadne symbole nie powinny być automatycznie eksportowane. [Ta opcja jest specyficzna dla
docelowy port i386 PE linkera]

--wyrównanie-plików
Określ wyrównanie pliku. Sekcje w pliku zawsze zaczynają się od offsetów pliku
które są wielokrotnościami tej liczby. Wartość domyślna to 512. [Ta opcja jest specyficzna
do docelowego portu i386 PE linkera]

--sterta rezerwa
--sterta rezerwa,popełnić
Określ liczbę bajtów pamięci do zarezerwowania (i opcjonalnie zatwierdzenia) do wykorzystania jako
kupa tego programu. Wartość domyślna to zarezerwowane 1 MB, popełnione 4K. [Ta opcja to
specyficzne dla docelowego portu i386 PE linkera]

--baza-obrazów wartość
Zastosowanie wartość jako adres bazowy twojego programu lub biblioteki dll. To najniższa pamięć
lokalizacja, która będzie używana podczas ładowania programu lub biblioteki dll. Aby zmniejszyć potrzebę
przenieś i popraw wydajność swoich bibliotek dll, każda powinna mieć unikalny adres bazowy
i nie nakładają się na żadne inne biblioteki dll. Wartość domyślna to 0x400000 dla plików wykonywalnych i
0x10000000 dla bibliotek dll. [Ta opcja jest specyficzna dla docelowego portu i386 PE
linker]

--kill-at
Jeśli podano, przyrostki wywołania standardowego (@nn) zostaną usunięte z symboli, zanim się pojawią
eksportowane. [Ta opcja jest specyficzna dla docelowego portu i386 PE linkera]

--duży adres-świadomy
Jeśli podano, ustawiany jest odpowiedni bit w polu „Charakterystyka” nagłówka COFF
aby wskazać, że ten plik wykonywalny obsługuje adresy wirtualne większe niż 2 gigabajty.
Powinno to być używane w połączeniu z /3GB lub /USERVA=wartość megabajty się przełączają
sekcja „[systemy operacyjne]” BOOT.INI. W przeciwnym razie ten bit nie ma żadnego efektu.
[Ta opcja jest specyficzna dla portów linkera przeznaczonych dla PE]

--wyłącz świadomość dużego adresu
Cofa efekt poprzedniego --duży adres-świadomy opcja. Jest to przydatne, jeśli
--duży adres-świadomy jest zawsze ustawiana przez sterownik kompilatora (np. Cygwin gcc), a
plik wykonywalny nie obsługuje adresów wirtualnych większych niż 2 gigabajty. [Ta opcja
jest specyficzny dla docelowych portów linkera PE]

--główna-wersja-obrazu wartość
Ustawia numer główny „wersji obrazu”. Domyślnie 1. [Ta opcja to
specyficzne dla docelowego portu i386 PE linkera]

--dur-os-wersja wartość
Ustawia numer główny "wersji systemu operacyjnego". Domyślnie 4. [Ta opcja jest specyficzna
do docelowego portu i386 PE linkera]

--główna-wersja-podsystemu wartość
Ustawia numer główny „wersji podsystemu”. Domyślnie 4. [Ta opcja to
specyficzne dla docelowego portu i386 PE linkera]

--wersja-pomniejszego-obrazu wartość
Ustawia mniejszą liczbę „wersji obrazu”. Domyślnie 0. [Ta opcja to
specyficzne dla docelowego portu i386 PE linkera]

--minor-os-wersja wartość
Ustawia mniejszą liczbę "wersji systemu operacyjnego". Domyślnie 0. [Ta opcja jest specyficzna
do docelowego portu i386 PE linkera]

--wersja-podsystemu-podrzędnego wartość
Ustawia mniejszą liczbę "wersji podsystemu". Domyślnie 0. [Ta opcja to
specyficzne dla docelowego portu i386 PE linkera]

--output-def filet
Linker utworzy plik filet który będzie zawierał plik DEF odpowiadający
DLL, który generuje konsolidator. Ten plik DEF (który powinien nazywać się "*.def") może:
być używany do tworzenia biblioteki importu za pomocą "dlltool" lub może być używany jako odniesienie do
automatycznie lub niejawnie eksportowane symbole. [Ta opcja jest specyficzna dla i386 PE
docelowy port linkera]

--out-implib filet
Linker utworzy plik filet który będzie zawierał import lib odpowiadający
DLL, który generuje konsolidator. Ta biblioteka importu (która powinna nazywać się "*.dll.a" lub
"*.a" może być używany do łączenia klientów z wygenerowaną biblioteką DLL; to zachowanie sprawia, że
można pominąć oddzielny krok tworzenia biblioteki importu "dlltool". [Ta opcja to
specyficzne dla docelowego portu i386 PE linkera]

--enable-auto-image-base
--enable-auto-image-base=wartość
Automatycznie wybierz bazę obrazu dla bibliotek DLL, opcjonalnie zaczynając od bazy wartość,
chyba że podano jeden za pomocą argumentu „--image-base”. Używając wygenerowanego skrótu
z nazwy dll, aby utworzyć unikalne bazy obrazów dla każdej biblioteki DLL, kolizji w pamięci i
unika się relokacji, które mogą opóźnić wykonanie programu. [Ta opcja jest specyficzna
do docelowego portu i386 PE linkera]

--wyłącz-auto-obraz-bazę
Nie generuj automatycznie unikalnej bazy obrazów. Jeśli nie ma określonego użytkownika
baza obrazu („--image-base”), a następnie użyj domyślnej platformy. [Ta opcja jest specyficzna
do docelowego portu i386 PE linkera]

--dll-search-prefiks ciąg
Podczas dynamicznego łączenia z biblioteką dll bez biblioteki importu wyszukaj
" .dll” zamiast „lib .dll". To zachowanie pozwala
łatwe rozróżnienie między bibliotekami DLL zbudowanymi na różne „podplatformy”: natywne, cygwin,
uwin, pw itp. Na przykład biblioteki DLL cygwin zwykle używają "--dll-search-prefix=cyg".
[Ta opcja jest specyficzna dla docelowego portu i386 PE linkera]

--włącz automatyczne importowanie
Wykonaj zaawansowane łączenie "_symbol" z "__imp__symbol" dla importu DANYCH z bibliotek DLL,
i utwórz niezbędne symbole thunking podczas budowania bibliotek importu za pomocą
te eksporty DANYCH. Uwaga: użycie rozszerzenia „auto-import” spowoduje wyświetlenie tekstu
fragment pliku obrazu, który ma być zapisywalny. To nie jest zgodne z PE-COFF
specyfikacja formatu opublikowana przez Microsoft.

Uwaga - użycie rozszerzenia 'auto-import' spowoduje również, że dane tylko do odczytu będą
zwykle umieszczane w sekcji .rdata, które mają być umieszczone w sekcji .data
zamiast. Ma to na celu obejście problemu z opisanymi const
tutaj: http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html

Korzystanie z „automatycznego importu” generalnie „po prostu działa” – ale czasami możesz to zobaczyć
wiadomość:

„zmienna ' ' nie może być automatycznie importowana. Przeczytaj dokumentację dla ld's
„--enable-auto-import”, aby uzyskać szczegółowe informacje”.

Ten komunikat pojawia się, gdy jakieś (pod)wyrażenie uzyskuje dostęp do adresu ostatecznie podanego przez
suma dwóch stałych (tabele importu Win32 pozwalają tylko na jedną). Instancje, w których to
mogą wystąpić m.in. dostępy do pól składowych zmiennych struktury importowanych z biblioteki DLL,
a także użycie stałego indeksu do zmiennej tablicowej zaimportowanej z biblioteki DLL. Każdy
zmienna wielowyrazowa (tablice, struktury, długa długość itp.) może wywołać ten stan błędu.
Jednak niezależnie od dokładnego typu danych naruszającej eksportowanej zmiennej, ld będzie
zawsze go wykryj, wydaj ostrzeżenie i wyjdź.

Istnieje kilka sposobów rozwiązania tego problemu, niezależnie od typu danych
eksportowana zmienna:

Jednym ze sposobów jest użycie przełącznika --enable-runtime-pseudo-reloc. To pozostawia zadanie
dostosowanie referencji w kodzie klienta dla środowiska uruchomieniowego, więc ta metoda działa
tylko wtedy, gdy środowisko wykonawcze obsługuje tę funkcję.

Drugim rozwiązaniem jest wymuszenie, aby jedna ze „stałych” była zmienną – to znaczy
nieznany i niemożliwy do zoptymalizowania w czasie kompilacji. W przypadku tablic istnieją dwie możliwości:
a) ustaw indeksowany (adres tablicy) jako zmienną lub b) ustaw indeks „stały”
zmienna. Zatem:

typ zewnętrzny extern_array[];
tablica_zewn[1] -->
{ typ ulotny *t=extern_array; t[1] }

or

typ zewnętrzny extern_array[];
tablica_zewn[1] -->
{ lotny int t=1; tablica_zewn[t] }

W przypadku struktur (i większości innych wielowyrazowych typów danych) jedyną opcją jest ustawienie
struct sama (lub long long, lub ...) zmienna:

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

or

extern długi długi extern_ll;
extern_ll -->
{ volatile long long * local_ll=&extern_ll; *lokalny_ll }

Trzecią metodą radzenia sobie z tą trudnością jest rezygnacja z „auto-importu” dla
obraźliwy symbol i oznacz go „__declspec(dllimport)”. Jednak w praktyce to
wymaga użycia #defines w czasie kompilacji, aby wskazać, czy budujesz DLL,
budowanie kodu klienta, który będzie łączył się z biblioteką DLL, lub po prostu budowanie / łączenie ze statycznym
Biblioteka. Dokonując wyboru między różnymi metodami rozwiązywania „bezpośrednich”
adres z problemem stałego przesunięcia, powinieneś rozważyć typowe użycie w świecie rzeczywistym:

Original:

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

Rozwiązanie 1:

--foo.h
zewn. wewn[];
--foo.c
#include "foo.h"
void main(int argc, char **argv){
/* To obejście dotyczy win32 i cygwin; nie "optymalizuj" */
niestabilny int *parr = arr;
printf("%d\n",parr[1]);
}

Rozwiązanie 2:

--foo.h
/* Uwaga: zakładany jest automatyczny eksport (brak __declspec(dllexport)) */
#if (zdefiniowano(_WIN32) || określono(__CYGWIN__)) && \
!(zdefiniowane(FOO_BUILD_DLL) ||zdefiniowane(FOO_STATIC))
#define FOO_IMPORT __declspec(dllimport)
#else
#definiuj FOO_IMPORT
#endif
extern FOO_IMPORT int arr[];
--foo.c
#include "foo.h"
void main(int argc, char **argv){
printf("%d\n",arr[1]);
}

Czwartym sposobem na uniknięcie tego problemu jest przekodowanie biblioteki w celu użycia funkcji
interfejs zamiast interfejsu danych dla naruszających zmiennych (np set_foo() dzięki
get_foo() funkcje akcesorów). [Ta opcja jest specyficzna dla docelowego portu i386 PE
linkera]

--wyłącz-auto-import
Nie próbuj robić skomplikowanego łączenia „_symbol” z „__imp__symbol” dla DANYCH
importy z bibliotek DLL. [Ta opcja jest specyficzna dla docelowego portu i386 PE
linker]

--enable-runtime-pseudo-reloc
Jeśli Twój kod zawiera wyrażenia opisane w sekcji --enable-auto-import, to znaczy:
Import danych z biblioteki DLL z niezerowym przesunięciem, ten przełącznik utworzy wektor
„Pseudorelokacje środowiska uruchomieniowego”, które mogą być używane przez środowisko uruchomieniowe w celu dostosowania
odniesienia do takich danych w kodzie klienta. [Ta opcja jest specyficzna dla i386 PE
docelowy port linkera]

--disable-runtime-pseudo-reloc
Nie twórz pseudorelokacji dla importów danych z niezerowym przesunięciem z bibliotek DLL. [Ten
opcja jest specyficzna dla docelowego portu i386 PE linkera]

--enable-extra-pe-debug
Pokaż dodatkowe informacje debugowania związane z myśleniem o symbolach automatycznego importu. [Ta opcja to
specyficzne dla docelowego portu i386 PE linkera]

--wyrównanie przekroju
Ustawia wyrównanie przekroju. Sekcje w pamięci zawsze zaczynają się od adresów, które
są wielokrotnością tej liczby. Domyślnie 0x1000. [Ta opcja jest specyficzna dla
i386 PE docelowy port linkera]

--stos rezerwa
--stos rezerwa,popełnić
Określ liczbę bajtów pamięci do zarezerwowania (i opcjonalnie zatwierdzenia) do wykorzystania jako
stos dla tego programu. Wartość domyślna to zarezerwowane 2 MB, popełnione 4K. [Ta opcja to
specyficzne dla docelowego portu i386 PE linkera]

--podsystem który
--podsystem który:poważny
--podsystem który:poważny.moll
Określa podsystem, w którym będzie wykonywany program. Wartości prawne dla
który są „natywne”, „windows”, „konsola”, „posix” i „xbox”. Możesz opcjonalnie ustawić
wersja podsystemu również. Wartości liczbowe są również akceptowane dla który. [Ta opcja
jest specyficzny dla docelowego portu i386 PE linkera]

Poniższe opcje ustawiają flagi w polu „DllCharacteristics” pliku PE
header: [Te opcje są specyficzne dla docelowych portów linkera PE]

--wysoka entropia-va
Obraz jest zgodny z 64-bitową randomizacją układu przestrzeni adresowej (ASLR).

--dynamicbase
Adres bazowy obrazu może zostać przeniesiony za pomocą randomizacji układu przestrzeni adresowej
(ASLR). Ta funkcja została wprowadzona w systemie MS Windows Vista dla podsystemów i386 PE.

--forceinteg
Kontrole integralności kodu są wymuszane.

--nxcompat
Obraz jest zgodny z funkcją zapobiegania wykonywaniu danych. Ta funkcja była
wprowadzony z MS Windows XP SP2 dla podsystemów i386 PE.

--brak izolacji
Chociaż obraz rozumie izolację, nie izoluj obrazu.

--no-seh
Obraz nie używa SEH. Żaden program obsługi SE nie może być wywołany z tego obrazu.

--bez wiązania
Nie wiąż tego obrazu.

--wdmdriver
Sterownik wykorzystuje model sterownika MS Windows.

--tsaware
Obraz jest świadomy serwera terminali.

--wstaw znacznik czasu
--no-insert-timestamp
Wstaw rzeczywisty znacznik czasu do obrazu. Jest to domyślne zachowanie, ponieważ pasuje
starszego kodu i oznacza to, że obraz będzie działał z innymi, zastrzeżonymi narzędziami. ten
problem z tym ustawieniem domyślnym polega na tym, że spowoduje to nieco inne obrazy
produkowane za każdym razem, gdy te same źródła są połączone. Opcja --no-insert-timestamp mogą
być używane do wstawiania zerowej wartości znacznika czasu, co zapewnia, że ​​tworzone pliki binarne
z identycznych źródeł będą porównywać identycznie.

Cel C6X uClinux używa formatu binarnego o nazwie DSBT do obsługi bibliotek współdzielonych. Każdy
biblioteka współdzielona w systemie musi mieć unikalny indeks; wszystkie pliki wykonywalne używają indeksu
0.

--dsbt-rozmiar rozmiar
Ta opcja ustawia liczbę wpisów w DSBT bieżącego pliku wykonywalnego lub współdzielonego
biblioteka do rozmiar. Domyślnie tworzona jest tabela z 64 wpisami.

--dsbt-indeks wskaźnik
Ta opcja ustawia indeks DSBT bieżącej biblioteki wykonywalnej lub współdzielonej na: wskaźnik.
Wartość domyślna to 0, co jest odpowiednie do generowania plików wykonywalnych. Jeśli udostępniony
biblioteka jest generowana z indeksem DSBT 0, relokacje "R_C6000_DSBT_INDEX" są
skopiowane do pliku wyjściowego.

Pandemia --no-merge-exidx-entries przełącznik wyłącza łączenie sąsiednich wpisów exidx w
informacje o rozwijaniu ramki.

Linkery 68HC11 i 68HC12 obsługują określone opcje sterowania bankiem pamięci
mapowanie przełączania i generowanie kodu trampoliny.

--bez trampoliny
Ta opcja wyłącza generowanie trampoliny. Domyślnie trampolina to
generowane dla każdej funkcji dalekiej, która jest wywoływana za pomocą instrukcji "jsr" (to
dzieje się, gdy zostanie wzięty wskaźnik do funkcji dalekiej).

--bank-okno Nazwa
Ta opcja wskazuje linkerowi nazwę obszaru pamięci w PAMIĘĆ
specyfikacja opisująca okno banku pamięci. Definicja takiego regionu to
następnie używane przez linker do obliczania stronicowania i adresów w oknie pamięci.

Następujące opcje są obsługiwane w celu kontrolowania obsługi generowania GOT podczas łączenia dla
68 tys. celów.

--got=rodzaj
Ta opcja informuje linker, którego schematu generowania GOT ma użyć. rodzaj powinno być jednym
of pojedynczy, ujemny, multigot or cel. Więcej informacji można znaleźć we wpisie Info
dla ld.

Następujące opcje są obsługiwane w celu sterowania generowaniem instrukcji microMIPS, gdy:
łączenie dla celów MIPS.

--insn32
--no-insn32
Opcje te kontrolują wybór instrukcji microMIPS używanych w kodzie generowanym przez
linker, taki jak ten w PLT lub leniwe wiązania odcinków, lub w relaksacji. Gdyby
--insn32 jest używany, to linker używa tylko 32-bitowych kodowań instrukcji. Domyślnie
albo jeśli --no-insn32 używane są wszystkie kodowania instrukcji, w tym 16-bitowe
tam, gdzie to możliwe.

ŚRODOWISKO


Możesz zmienić zachowanie ld ze zmiennymi środowiskowymi "GNUTARGET",
„LDEMULACJA” i „COLLECT_NO_DEMANGLE”.

"GNUTARGET" określa format obiektu pliku wejściowego, jeśli nie używasz -b (lub jego synonim
--format). Jego wartość powinna być jedną z nazw BFD dla formatu wejściowego. Jeżeli nie ma
„GNUTARGET” w środowisku, ld wykorzystuje naturalny format celu. Jeśli „GNUTARGET”
jest ustawiony na "domyślny", wtedy BFD próbuje wykryć format wejściowy, sprawdzając plik binarny
pliki wejściowe; ta metoda często się udaje, ale istnieją potencjalne niejasności, ponieważ tam
nie ma metody zapewnienia, że ​​magiczna liczba używana do określenia formatów plików obiektowych to
jedyny w swoim rodzaju. Jednak procedura konfiguracji BFD w każdym systemie umieszcza
konwencjonalny format dla tego systemu jako pierwszy na liście wyszukiwania, więc niejasności są rozwiązywane
na rzecz konwencji.

"LDEMULATION" określa domyślną emulację, jeśli nie używasz -m opcja.
emulacja może wpływać na różne aspekty zachowania linkera, w szczególności linkera domyślnego
scenariusz. Możesz wyświetlić listę dostępnych emulacji za pomocą --gadatliwy or -V opcje. Jeśli
-m opcja nie jest używana, a zmienna środowiskowa „LDEMULATION” nie jest zdefiniowana,
domyślna emulacja zależy od konfiguracji konsolidatora.

Normalnie linker domyślnie używa symboli odszpecających. Jeśli jednak
"COLLECT_NO_DEMANGLE" jest ustawione w środowisku, wtedy domyślnie nie będzie rozplątywać
symbolika. Ta zmienna środowiskowa jest używana w podobny sposób przez linker „gcc”
program owijający. Wartość domyślna może zostać zastąpiona przez --demangle dzięki --bez-demangle
Opcje.

Użyj mips64-linux-gnuabi64-ld online za pomocą usług onworks.net


Ad


Ad

Najnowsze programy online dla systemów Linux i Windows