Sdílet prostřednictvím


/BASE (Základní adresa)

Určuje základní adresu programu.

Syntaxe

/BASE:{address[,size] | @filename,key}

Poznámky

Poznámka:

Z bezpečnostních důvodů společnost Microsoft doporučuje použít /DYNAMICBASE možnost místo zadávání základních adres pro vaše spustitelné soubory. /DYNAMICBASE vygeneruje spustitelný obrázek, který lze náhodně znovu načíst pomocí funkce randomizace rozložení adresního prostoru (ASLR) systému Windows. Možnost /DYNAMICBASE je ve výchozím nastavení zapnutá.

Možnost /BASE linkeru nastaví základní adresu pro program. Přepíše výchozí umístění souboru EXE nebo DLL. Výchozí základní adresa souboru EXE je 0x400000 pro 32bitové image nebo 0x140000000 pro 64bitové obrázky. Pro knihovnu DLL je výchozí základní adresa 0x10000000 pro 32bitové image nebo 0x180000000 pro 64bitové image. V operačních systémech, které nepodporují randomizaci rozložení adresního prostoru (ASLR) nebo při /DYNAMICBASE:NO nastavení možnosti se operační systém pokusí načíst program na zadanou nebo výchozí základní adresu. Pokud tam není dostatek místa, systém program přemístí. Pokud chcete zabránit přemístění, použijte tuto /FIXED možnost.

Linker vydá chybu, pokud address není násobkem 64 tisíc. Volitelně můžete zadat velikost programu. Linker vydá upozornění, pokud se program nevejde do zadané velikosti.

Na příkazovém řádku je dalším způsobem, jak zadat základní adresu, pomocí souboru odpovědi základní adresy. Soubor odpovědi základní adresy je textový soubor, který obsahuje základní adresy a volitelné velikosti všech knihoven DLL, které program používá, a jedinečný textový klíč pro každou základní adresu. Chcete-li zadat základní adresu pomocí souboru odpovědi, použijte znak at (@) následovaný názvem souboru odpovědi, filenamenásledovaný čárkou a hodnotou key základní adresy, která se má v souboru použít. Linker hledá filename buď zadanou cestu, nebo pokud není zadána žádná cesta, v adresářích zadaných v LIB proměnné prostředí. Každý řádek v filename představuje jednu knihovnu DLL a má následující syntaxi:

keyaddress [size] ; comment

Jedná se key o řetězec alfanumerických znaků a nerozlišuje malá a velká písmena. Obvykle se jedná o název knihovny DLL, ale není to nutné. Následuje key základ address v jazyce C, šestnáctkové nebo desetinné notaci a volitelné maximum size. Všechny tři argumenty jsou oddělené mezerami nebo tabulátory. Linker vydá upozornění, pokud je zadaný size menší než virtuální adresní prostor vyžadovaný programem. A comment je určen středníkem (;) a může být na stejném nebo samostatném řádku. Linker ignoruje veškerý text ze středníku na konec řádku. Tento příklad ukazuje část takového souboru:

main   0x00010000    0x08000000    ; for PROJECT.exe
one    0x28000000    0x00100000    ; for DLLONE.DLL
two    0x28100000    0x00300000    ; for DLLTWO.DLL

Pokud se soubor, který obsahuje tyto řádky, nazývá DLLS.txt, použije následující ukázkový příkaz tyto informace:

link dlltwo.obj /dll /base:@dlls.txt,two

Dalším způsobem, jak nastavit základní adresu, je použití argumentu BASE NAME v příkazu nebo LIBRARY příkazu. Možnosti /BASE a /DLL možnosti jsou společně ekvivalentní příkazu LIBRARY .

Nastavení tohoto parametru linkeru ve vývojovém prostředí sady Visual Studio

  1. Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.

  2. Vyberte stránku vlastností linkeru>>Konfigurace Upřesňující vlastnost.

  3. Upravte vlastnost Základní adresa.

Programové nastavení tohoto parametru linkeru

Viz také

Referenční zdroje k linkeru MSVC
Možnosti linkeru MSVC