Bagikan melalui


/BASE (Alamat dasar)

Menentukan alamat dasar untuk suatu program.

Sintaks

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

Keterangan

Catatan

Untuk alasan keamanan, Microsoft menyarankan Anda menggunakan opsi alih-alih /DYNAMICBASE menentukan alamat dasar untuk executable Anda. /DYNAMICBASE menghasilkan gambar yang dapat dieksekusi yang dapat diabas secara acak pada waktu pemuatan dengan menggunakan fitur pengacakan tata letak ruang alamat (ASLR) Windows. Opsi /DYNAMICBASE aktif secara default.

Opsi /BASE linker mengatur alamat dasar untuk program. Ini mengambil alih lokasi default untuk file EXE atau DLL. Alamat dasar default untuk file EXE 0x400000 untuk gambar 32-bit atau 0x140000000 untuk gambar 64-bit. Untuk DLL, alamat dasar default 0x10000000 untuk gambar 32-bit atau 0x180000000 untuk gambar 64-bit. Pada sistem operasi yang tidak mendukung pengacakan tata letak ruang alamat (ASLR), atau ketika /DYNAMICBASE:NO opsi diatur, sistem operasi pertama kali mencoba memuat program pada alamat dasar yang ditentukan atau default. Jika ruang tidak cukup tersedia di sana, sistem akan merelokasi program. Untuk mencegah relokasi, gunakan /FIXED opsi .

Linker mengeluarkan kesalahan jika address bukan kelipatan 64K. Anda dapat secara opsional menentukan ukuran program. Linker mengeluarkan peringatan jika program tidak dapat sesuai dengan ukuran yang Anda tentukan.

Pada baris perintah, cara lain untuk menentukan alamat dasar adalah dengan menggunakan file respons alamat dasar. File respons alamat dasar adalah file teks yang berisi alamat dasar dan ukuran opsional dari semua DLL yang digunakan program Anda, dan kunci teks unik untuk setiap alamat dasar. Untuk menentukan alamat dasar dengan menggunakan file respons, gunakan tanda (@) diikuti dengan nama file respons, filename, diikuti dengan koma, lalu key nilai untuk alamat dasar yang akan digunakan dalam file. Linker mencari filename di jalur yang ditentukan, atau jika tidak ada jalur yang ditentukan, dalam direktori yang ditentukan dalam LIB variabel lingkungan. Setiap baris mewakili filename satu DLL dan memiliki sintaks berikut:

keyaddress [size] ; comment

key adalah string karakter alfanumerik dan tidak peka huruf besar/kecil. Biasanya nama DLL, tetapi itu tidak diperlukan. key diikuti oleh basis address dalam bahasa C, heksadesimal, atau notasi desimal dan maksimum sizeopsional . Ketiga argumen dipisahkan oleh spasi atau tab. Linker mengeluarkan peringatan jika yang ditentukan size kurang dari ruang alamat virtual yang diperlukan oleh program. comment ditentukan oleh titik koma (;) dan dapat berada di baris yang sama atau terpisah. Linker mengabaikan semua teks dari titik koma ke akhir baris. Contoh ini menunjukkan bagian dari file seperti itu:

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

Jika file yang berisi baris ini disebut DLLS.txt, perintah contoh berikut menerapkan informasi ini:

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

Cara lain untuk mengatur alamat dasar adalah dengan menggunakan BASE argumen dalam pernyataan NAME atau LIBRARY . Opsi /BASE dan /DLL bersama-sama setara LIBRARY dengan pernyataan.

Untuk mengatur opsi linker ini di lingkungan pengembangan Visual Studio

  1. Buka kotak dialog Halaman Properti proyek. Untuk detailnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.

  2. Pilih halaman properti Tingkat Lanjut Linker>Properti>Konfigurasi.

  3. Ubah properti Alamat Dasar.

Untuk menyetel opsi linker ini secara terprogram

Lihat juga

Referensi linker MSVC
Opsi linker MSVC