Angielskifrancuskihiszpański

Ad


Ulubiona usługa OnWorks

h8300-hms-ld — online w chmurze

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

To jest polecenie h8300-hms-ld, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online Windows lub emulator online MAC OS

PROGRAM:

IMIĘ


ld - Używając LD, linkera GNU

STRESZCZENIE


stary [Opcje] plik obj ...

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", lub
podręcznik ld: linker GNU, aby uzyskać szczegółowe informacje na temat 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 pliki.

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. Zwróć uwagę, że określenie skryptu w ten sposób jedynie rozszerza główne
skrypt linkera; Użyj -T opcja całkowitego zastąpienia domyślnego skryptu linkera.

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 i --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 i --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,--startgroup foo.o bar.o -Wl,--endgroup

Jest to ważne, ponieważ w przeciwnym razie sterownik kompilatora może po cichu porzucić
opcje linkera, co skutkuje złym łączem.

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

-akeyword
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 -Bdynamika, To
opcja może być użyta dowolną ilość razy.

-Aarchitektura
--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ę
dotychczasowy -T możliwość uruchamiania skryptów linkera napisanych w ogólnym przeznaczeniu ld Skrypty
język. Gdyby Plik cmd MRI 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.

-e wejście
--wpis=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.

-E
--eksport-dynamika
Tworząc dynamicznie połączony plik wykonywalny, dodaj wszystkie symbole do symbolu dynamicznego
Tabela. Dynamiczna tablica symboli to zestaw symboli widocznych z dynamicznego
obiekty w czasie wykonywania.

Jeśli nie użyjesz tej opcji, 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ć skryptu wersji, aby kontrolować, jakie symbole powinny być dodawane do
dynamiczna tablica symboli, jeśli format wyjściowy ją obsługuje. Zobacz opis
--wersja-skryptu w @ref{WERSJA}.

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

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

-f
--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.

-Gwartość
--gpsrozmiar=wartość
Ustaw maksymalny rozmiar obiektów do optymalizacji za pomocą rejestru GP na rozmiar, To
ma znaczenie tylko dla formatów plików obiektowych, takich jak MIPS ECOFF, który obsługuje umieszczanie
duże i małe przedmioty na różne sekcje. Jest to ignorowane w przypadku innego obiektu
formaty plików.

-hNazwa
-nazwa_son=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).

-w tym 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.

-larchiwum
--biblioteka=archiwum
Dodaj plik archiwum archiwum do listy plików do połączenia. Ta opcja może być używana dowolna
kilka razy. ld przeszuka swoją listę ścieżek w poszukiwaniu wystąpień „libarchiwum.a" dla
każdy archiwum określony.

W systemach obsługujących biblioteki współdzielone, ld może również wyszukiwać biblioteki za pomocą
rozszerzenia inne niż „.a”. W szczególności w systemach ELF i SunOS, ld przeszukam
katalog dla biblioteki z rozszerzeniem ".so" przed wyszukaniem takiej z
rozszerzenie „.a”. Zgodnie z konwencją rozszerzenie „.so” oznacza bibliotekę współdzieloną.

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.

-Lkatalog wyszukiwania
--ścieżka-biblioteki=katalog wyszukiwania
Dodaj ścieżkę katalog wyszukiwania 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.

If katalog wyszukiwania zaczyna się od „=”, następnie „=” zostanie zastąpiony przez katalog główny prefiks, A
ścieżka określona podczas konfigurowania konsolidatora.

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ń.

-mwspół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 obiektów i symbole 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.

-n
--nmagia
Wyłącz wyrównywanie stron w sekcjach i oznacz dane wyjściowe jako „NMAGIC”, jeśli to możliwe.

-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ę -Bdynamika 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.wyj 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
binarny.

-q
--emituj-relokacje
Pozostaw sekcje i treści dotyczące relokacji 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.

-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 -rścieżka 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ą.

-u symbol
--niezdefiniowany=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".

-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.

--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. W przypadku większości celów są to wszystkie lokalne symbole, których
nazwy zaczynają się od L.

-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
Dodaj ścieżka do domyślnej ścieżki wyszukiwania biblioteki. Ta opcja istnieje dla Solaris
kompatybilność.

-z keyword
Rozpoznawane słowa kluczowe to:

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

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

najpierw init
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.

załadujfltr
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łącza tworzenie kopii relokacji.

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

węzły
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".

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.

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

-( archiwum -)
--grupa-startowa archiwum --grupa końcowa
Połączenia 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. --w razie potrzeby powoduje, że tagi DT_NEEDED są emitowane tylko przez
biblioteki, które spełniają niektóre odniesienia do symboli ze zwykłych obiektów, które są niezdefiniowane
w momencie podłączenia biblioteki. --nie-w razie potrzeby przywraca domyślne
zachowanie.

--dodaj-potrzebne
--nie trzeba dodawać
Ta opcja wpływa na traktowanie bibliotek dynamicznych ze znaczników ELF DT_NEEDED w
biblioteki dynamiczne wymienione w wierszu poleceń po --nie trzeba dodawać opcja.
Zwykle linker doda znacznik DT_NEEDED dla każdej biblioteki dynamicznej z DT_NEEDED
tagi. --nie trzeba dodawać powoduje, że tagi DT_NEEDED nigdy nie będą emitowane dla tych bibliotek
z tagów DT_NEEDED. --dodaj-potrzebne przywraca domyślne zachowanie.

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

-Bdynamika
-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.

-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 ma znaczenie tylko na platformach ELF, które obsługują biblioteki współdzielone.

--sprawdź-sekcje
--no-check-sekcji
Pyta linkera nie aby sprawdzić adresy sekcji po ich przypisaniu, aby sprawdzić, czy
tam wszelkie nakładanie się. Normalnie linker wykona to sprawdzenie, a jeśli coś znajdzie
nakłada się, spowoduje to 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.

--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. Pozostałe pliki zawierają odniesienia do symbolu.

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

Połączenia --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 ZBIERZ_NO_DEMANGLE jest ustawiony. Te
opcje mogą być użyte do zastąpienia wartości domyślnych.

--dynamiczny 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.

--fatal-ostrzeżenia
Traktuj wszystkie ostrzeżenia jako błędy.

--force-exe-sufiks
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”.

--no-gc-sekcji
--gc-sekcje
Włącz odśmiecanie nieużywanych sekcji wejściowych. Jest ignorowany na celach, które nie
nie obsługują tej opcji. Ta opcja nie jest kompatybilna z -r. Zachowanie domyślne
(nie wykonywania tego wyrzucania śmieci) można przywrócić, określając
--no-gc-sekcji w wierszu poleceń.

--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 def
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-niezdefiniowany
--no-allow-shlib-niezdefiniowany
Zezwala (domyślnie) lub nie zezwala na niezdefiniowane symbole w bibliotekach współdzielonych. Ten przełącznik
jest podobne do --brak-nieokreślony poza tym, że określa zachowanie, gdy
niezdefiniowane symbole znajdują się w bibliotece współdzielonej, a nie w zwykłym pliku obiektowym. To robi
nie wpływa na sposób obsługi niezdefiniowanych symboli w zwykłych plikach obiektowych.

Powód, dla którego --allow-shlib-niezdefiniowany domyślnie biblioteka współdzielona
określony w czasie połączenia może nie być taki sam, jak ten, który jest dostępny podczas ładowania
czas, więc symbole mogą być faktycznie rozpoznawalne w czasie ładowania. Plus jest kilka
systemy, (np. BeOS), gdzie niezdefiniowane symbole w bibliotekach współdzielonych są normalne. (Jądro
łata je w czasie ładowania, aby wybrać, która funkcja jest najbardziej odpowiednia dla prądu
architektura. Służy na przykład do dynamicznego wyboru odpowiedniego memsetu
funkcjonować). Najwyraźniej normalne jest również, że biblioteki współdzielone HPPA mają niezdefiniowane
symbolika.

--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-importowany-symver
Utwórz i użyj domyślnej wersji symbolu (soname) dla niewersjonowanych importowanych symboli.

--no-warn-dismatch
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.

--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.

--format 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.

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

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

--zrelaksować się
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, które stają się
możliwe, gdy linker rozwiąże adresowanie w programie, takie jak rozluźnienie adresu
trybów i syntezy nowych instrukcji w wyjściowym pliku obiektowym.

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.

--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
i -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 -rścieżka argumenty są łączone i przekazywane do
konsolidator środowiska uruchomieniowego, który używa ich do lokalizowania obiektów udostępnionych w czasie wykonywania. ten -rścieżka
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 -rścieżka-link opcja. Gdyby
-rścieżka nie jest używany podczas łączenia pliku wykonywalnego ELF, zawartości środowiska
zmienna "LD_RUN_PATH" będzie używana, jeśli jest zdefiniowana.

Połączenia -rścieżka opcja może być również użyta w SunOS. Domyślnie w SunOS linker:
utwórz łatkę wyszukiwania środowiska uruchomieniowego ze wszystkich -L opcje są podane. Jeśli -rścieżka opcja
jest używany, ścieżka wyszukiwania środowiska uruchomieniowego zostanie utworzona wyłącznie przy użyciu -rścieżka 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ę na systemach plików zamontowanych 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 -rścieżka opcja.

-rścieżka-link DIR
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 -rścieżka-link opcja
określa pierwszy zestaw katalogów do przeszukania. ten -rścieżka-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 -rścieżka-link opcje.

2. Wszelkie katalogi określone przez -rścieżka opcje. Różnica pomiędzy -rścieżka i
-rścieżka-link czy katalogi są określone przez -rścieżka opcje są zawarte w
wykonywalny i używany w czasie wykonywania, podczas gdy -rścieżka-link opcja jest skuteczna tylko
w czasie połączenia. To jest tylko dla natywnego linkera.

3. W systemie ELF, jeśli -rścieżka i nie użyto opcji „rpath-link”, wyszukaj
zawartość zmiennej środowiskowej "LD_RUN_PATH". To jest dla natywnego linkera
tylko.

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

5. W przypadku natywnego konsolidatora 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 i / 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
Ta opcja mówi ld sortować typowe symbole według rozmiaru, gdy umieszcza je w
odpowiednie sekcje wyjściowe. Najpierw są wszystkie jednobajtowe symbole, a potem wszystkie
bajt, potem wszystkie cztery bajty, a potem wszystko inne. Ma to na celu zapobieganie lukom
między symbolami z powodu ograniczeń wyrównania.

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

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

--podziel na plik [rozmiar]
Podobny do --podział przez relokację 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ł przez relokację [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ść
32768.

--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.

--sekcja-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.

-Tbs org
-Tdane org
-Ttekst org
To samo co --section-start, z ".bss", ".data" lub ".text" jako nazwa sekcji.

--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
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.

--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 ma znaczenie tylko w ELF
platformy obsługujące biblioteki współdzielone.

--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.

Połączenia --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-konstruktory
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.

--ostrzeżenie-wyrównanie-sekcji
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-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.

--zawinąć 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”.

--włącz-nowe-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 --włącz-nowe-dtags, zostaną utworzone tagi dynamiczne
w razie potrzeby. Jeśli określisz --wyłącz-nowe-dtags, nie zostaną utworzone żadne nowe tagi dynamiczne.
Domyślnie nowe tagi dynamiczne nie są tworzone. Pamiętaj, że te opcje są tylko
dostępne dla systemów 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.

--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.

Połączenia --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.

Łą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 narzędzie dll. [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-stdcall-fixup
--wyłącz-stdcall-fixup
Jeśli łącze znajdzie symbol, którego nie może rozwiązać, spróbuje zrobić ``rozmyty
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]

--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]

--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 ilość pamięci do zarezerwowania (i opcjonalnie zatwierdzenia) do wykorzystania jako sterta dla
ten program. Wartość domyślna to 1 MB zarezerwowane, 4 KB zatwierdzone. [Ta opcja jest specyficzna dla
docelowy port 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]

--zabij-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, odpowiedni bit w polu ``Charakterystyka'' nagłówka COFF to
ustawiony, 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ść megabajtów
przełącznik w sekcji ``[operating systems]'' BOOT.INI. W przeciwnym razie ten bit
nie ma żadnego efektu. [Ta opcja jest specyficzna dla portów linkera przeznaczonych dla PE]

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

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

--główna-wersja-podsystemu wartość
Ustawia główny numer ``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 ``os''. 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]

--wyjście-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-automatic-image-base
Automatycznie wybierz bazę obrazu dla bibliotek DLL, chyba że zostanie określona za pomocą
Argument „--image-base”. Używając skrótu wygenerowanego z dllname do tworzenia unikalnych
bazy obrazów dla każdej biblioteki DLL, kolizje w pamięci i relokacje, które mogą opóźnić program
egzekucji unika się. [Ta opcja jest specyficzna dla docelowego portu i386 PE
linker]

--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.

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:

struktura zewnętrzna s struktura_zewnętrzna;
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) ⎪⎪ zdefiniowano(__CYGWIN__)) && \
!(zdefiniowane(FOO_BUILD_DLL) ⎪⎪ zdefiniowane(FOO_STATIC))
#define FOO_IMPORT __declspec(dllimport)
#else
#definiuj FOO_IMPORT
#endif
extern FOO_IMPORT int tablica [];
--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() i
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. To jest
domyślny. [Ta 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 ilość pamięci do zarezerwowania (i opcjonalnie zatwierdzenia) do wykorzystania jako stos
dla tego programu. Wartość domyślna to 2 MB zarezerwowane, 4 KB zatwierdzone. [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]

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.

Ś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 --demangować i --bez-demangle
opcje.

Korzystaj z h8300-hms-ld online za pomocą usług onworks.net


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

  • 1
    DivFix + +
    DivFix + +
    DivFix++ to Twoja naprawa wideo AVI i
    oprogramowanie podglądu. Przeznaczony do naprawy
    i przeglądaj pliki, które są pobierane
    z ed2k (emule), torrent, gnutella, ftp...
    Pobierz DivFix++
  • 2
    Społeczność JBoss
    Społeczność JBoss
    Projekty kierowane przez społeczność, w tym m.in
    najnowsze innowacje dla najnowocześniejszych
    aplikacje. Naszym flagowym projektem jest JBoss AS
    wiodące oprogramowanie Open Source,
    zgodne ze standardami...
    Pobierz społeczność JBoss
  • 3
    Filer Django
    Filer Django
    django Filer to zarządzanie plikami
    aplikacja dla django, która tworzy
    obsługa plików i obrazów jest dziecinnie prosta.
    django-filer to zarządzanie plikami
    aplikacja dla djanga...
    Pobierz Django Filer
  • 4
    xCAT
    xCAT
    Zestaw narzędzi do administrowania klastrem Extreme.
    xCAT to skalowalne zarządzanie klastrami
    i narzędzie do obsługi administracyjnej, które zapewnia
    kontrola sprzętu, wykrywanie i system operacyjny
    dysk twardy/dys...
    Pobierz xCAT
  • 5
    Psi
    Psi
    Psi to wieloplatformowy potężny XMPP
    klient przeznaczony dla doświadczonych użytkowników.
    Dostępne są kompilacje dla MS
    Windows, GNU/Linux i macOS. Odbiorcy:
    Użytkownicy końcowi...
    Pobierz Psi
  • 6
    Blobby Volley 2
    Blobby Volley 2
    Oficjalna kontynuacja słynnego
    Blobby Volley 1.x gra zręcznościowa..
    Odbiorcy: użytkownicy końcowi/komputery. Użytkownik
    interfejs: OpenGL, SDL. Programowanie
    Język: C++, Lua. C...
    Pobierz Blobby Volley 2
  • więcej »

Komendy systemu Linux

Ad