/BASE
(Adres podstawowy)
Określa adres podstawowy programu.
Składnia
/BASE:
{address
[,
size
] |@
filename
,
key
}
Uwagi
Uwaga
Ze względów bezpieczeństwa firma Microsoft zaleca użycie /DYNAMICBASE
opcji zamiast określania adresów bazowych dla plików wykonywalnych. /DYNAMICBASE
Generuje obraz wykonywalny, który może być losowo rebased w czasie ładowania przy użyciu funkcji randomizacji układu przestrzeni adresowej (ASLR) systemu Windows. Opcja /DYNAMICBASE
jest domyślnie włączona.
Opcja /BASE
konsolidatora ustawia adres podstawowy programu. Zastępuje domyślną lokalizację pliku EXE lub DLL. Domyślny adres podstawowy pliku EXE jest 0x400000 dla obrazów 32-bitowych lub 0x140000000 dla obrazów 64-bitowych. W przypadku biblioteki DLL domyślny adres podstawowy jest 0x10000000 dla obrazów 32-bitowych lub 0x180000000 dla obrazów 64-bitowych. W systemach operacyjnych, które nie obsługują losowania układu przestrzeni adresowej (ASLR) lub gdy /DYNAMICBASE:NO
została ustawiona opcja, system operacyjny najpierw próbuje załadować program pod określonym lub domyślnym adresem podstawowym. Jeśli jest dostępna niewystarczająca ilość miejsca, system przenosi program. Aby zapobiec relokacji, użyj /FIXED
opcji .
Konsolidator zgłasza błąd, jeśli address
nie ma wielokrotności 64K. Opcjonalnie można określić rozmiar programu. Konsolidator wyświetla ostrzeżenie, jeśli program nie może zmieścić się w określonym rozmiarze.
W wierszu polecenia innym sposobem określenia adresu podstawowego jest użycie pliku odpowiedzi adresu podstawowego. Plik odpowiedzi adresu podstawowego to plik tekstowy zawierający adresy podstawowe i opcjonalne rozmiary wszystkich bibliotek DLL używanych przez program oraz unikatowy klucz tekstowy dla każdego adresu podstawowego. Aby określić adres podstawowy przy użyciu pliku odpowiedzi, użyj znaku at (@
), a następnie nazwy pliku odpowiedzi, filename
a następnie przecinka, a następnie key
wartości adresu podstawowego do użycia w pliku. Konsolidator szuka filename
w określonej ścieżce lub jeśli nie określono żadnej ścieżki, w katalogach określonych w zmiennej środowiskowej LIB
. Każdy wiersz w obiekcie filename
reprezentuje jedną bibliotekę DLL i ma następującą składnię:
key
address
[size
];
comment
Jest key
to ciąg znaków alfanumerycznych i nie uwzględnia wielkości liter. Zazwyczaj jest to nazwa biblioteki DLL, ale nie jest to wymagane. Następuje key
po nim podstawa address
w języku C, szesnastkowej lub dziesiętnej notacji oraz opcjonalna maksymalna wartość size
. Wszystkie trzy argumenty są oddzielone spacjami lub tabulatorami. Konsolidator wystawia ostrzeżenie, jeśli określona size
przestrzeń adresowa jest mniejsza niż wirtualna przestrzeń adresowa wymagana przez program. Element A comment
jest określony średnikiem (;
) i może znajdować się w tym samym lub osobnym wierszu. Konsolidator ignoruje cały tekst ze średnika na końcu wiersza. W tym przykładzie pokazano część takiego pliku:
main 0x00010000 0x08000000 ; for PROJECT.exe
one 0x28000000 0x00100000 ; for DLLONE.DLL
two 0x28100000 0x00300000 ; for DLLTWO.DLL
Jeśli plik zawierający te wiersze jest nazywany DLLS.txt, następujące przykładowe polecenie stosuje następujące informacje:
link dlltwo.obj /dll /base:@dlls.txt,two
Innym sposobem ustawienia adresu podstawowego jest użycie argumentu BASE
w instrukcji NAME
or LIBRARY
. Opcje /BASE
i /DLL
są równoważne instrukcji LIBRARY
.
Aby ustawić tę opcję konsolidatora w środowisku programowania Visual Studio
Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).
Wybierz stronę właściwości Zaawansowane konsolidatora> właściwości>konfiguracji.
Zmodyfikuj właściwość Adres podstawowy.
Aby programowo ustawić tę opcję konsolidatora
- Zobacz: BaseAddress.