/BASE (기본 주소)

프로그램의 기본 주소를 지정합니다.

구문

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

설명

참고 항목

보안상의 이유로 Microsoft는 실행 파일의 기본 주소를 지정하는 대신 이 옵션을 사용하는 /DYNAMICBASE 것이 좋습니다. /DYNAMICBASE 는 Windows의 ASLR(주소 공간 레이아웃 임의화) 기능을 사용하여 로드 시 임의로 다시 기반할 수 있는 실행 파일을 생성합니다. 이 /DYNAMICBASE 옵션은 기본적으로 설정됩니다.

/BASE 링커 옵션은 프로그램의 기본 주소를 설정합니다. EXE 또는 DLL 파일의 기본 위치를 재정의합니다. EXE 파일의 기본 주소는 32비트 이미지에 0x400000 64비트 이미지의 경우 0x140000000. DLL의 경우 기본 기본 주소는 32비트 이미지의 경우 0x10000000, 64비트 이미지의 경우 0x180000000. ASLR(주소 공간 레이아웃 임의화)을 지원하지 않는 운영 체제에서 또는 옵션이 설정된 경우 /DYNAMICBASE:NO 운영 체제는 먼저 지정된 또는 기본 기본 주소에서 프로그램을 로드하려고 시도합니다. 사용할 수 있는 공간이 부족하면 시스템에서 프로그램을 재배치합니다. 재배치를 방지하려면 이 /FIXED 옵션을 사용합니다.

링커는 64K의 배수가 아닌 경우 address 오류를 발생합니다. 필요에 따라 프로그램의 크기를 지정할 수 있습니다. 프로그램이 지정한 크기에 맞지 않으면 링커에서 경고를 발생합니다.

명령줄에서 기본 주소를 지정하는 또 다른 방법은 기본 주소 응답 파일을 사용하는 것입니다. 기본 주소 응답 파일은 프로그램에서 사용하는 모든 DLL의 기본 주소와 선택적 크기 및 각 기본 주소에 대한 고유한 텍스트 키를 포함하는 텍스트 파일입니다. 응답 파일을 사용하여 기본 주소를 지정하려면 at 기호(@)와 응답 파일 이름, filename쉼표, 파일에 key 사용할 기본 주소 값을 사용합니다. 링커는 환경 변수에 지정된 디렉터리 LIB 에서 지정된 경로를 찾거나 경로가 지정되지 않은 경우 찾 filename 습니다. 각 줄은 filename 하나의 DLL을 나타내며 다음 구문을 사용합니다.

keyaddress [size] ;comment

key 숫자 문자의 문자열이며 대/소문자를 구분하지 않습니다. 일반적으로 DLL의 이름이지만 필수는 아닙니다. 그 다음에는 key C-language, 16진수 또는 10진수 표기법의 기준 address 과 선택적 최대 size값이 잇습니다. 세 인수는 모두 공백 또는 탭으로 구분됩니다. 지정 size 한 주소가 프로그램에 필요한 가상 주소 공간보다 작으면 링커에서 경고를 발생합니다. A comment 는 세미콜론(;)으로 지정되며 동일하거나 별도의 줄에 있을 수 있습니다. 링커는 세미콜론에서 줄 끝까지의 모든 텍스트를 무시합니다. 이 예제에서는 이러한 파일의 일부를 보여줍니다.

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

이러한 줄을 포함하는 파일을 DLLS.txt라고 하는 경우 다음 예제 명령은 이 정보를 적용합니다.

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

기본 주소를 설정하는 또 다른 방법은 또는 LIBRARY 문에서 인수를 BASENAME 사용하는 것입니다. /BASE/DLL 옵션은 함께 문에 해당합니다LIBRARY.

Visual Studio 개발 환경에서 이 링커 옵션을 설정하려면

  1. 프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.

  2. 구성 속성>링커>고급 속성 페이지를 선택합니다.

  3. 기본 주소 속성을 수정합니다.

프로그래밍 방식으로 이 링커 옵션을 설정하려면

참고 항목

MSVC 링커 참조
MSVC 링커 옵션