CL Memanggil Linker
CL secara otomatis memanggil linker setelah mengkompilasi kecuali opsi /c digunakan. CL meneruskan ke linker nama file .obj yang dibuat selama kompilasi dan nama file lain yang ditentukan pada baris perintah. Linker menggunakan opsi yang tercantum dalam variabel lingkungan LINK. Anda dapat menggunakan opsi /link untuk menentukan opsi linker pada baris perintah CL. Opsi yang mengikuti opsi /link mengambil alih opsi tersebut dalam variabel lingkungan LINK. Opsi dalam tabel berikut menekan penautan.
Opsi | Deskripsi |
---|---|
c | Mengkompilasi tanpa menautkan |
/E, /EP, /P | Pra-proses tanpa mengkompilasi atau menautkan |
/Zg | Membuat prototipe fungsi |
/Zs | Memeriksa sintaksis |
Untuk detail lebih lanjut tentang penautan, lihat Opsi MSVC Linker.
Contoh
Asumsikan bahwa Anda mengkompilasi tiga file sumber C: MAIN.c, MOD1.c, dan MOD2.c. Setiap file menyertakan panggilan ke fungsi yang ditentukan dalam file yang berbeda:
MAIN.c memanggil fungsi
func1
di MOD1.c dan fungsifunc2
di MOD2.c.MOD1.c memanggil fungsi
printf_s
pustaka standar danscanf_s
.MOD2.c memanggil fungsi grafis bernama
myline
danmycircle
, yang didefinisikan dalam pustaka bernama MYGRAPH.lib.
Untuk membangun program ini, kompilasi dengan baris perintah berikut:
CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib
CL pertama-tama mengkompilasi file sumber C dan membuat file objek MAIN.obj, MOD1.obj, dan MOD2.obj. Pengkompilasi menempatkan nama pustaka standar di setiap file .obj. Untuk detail selengkapnya, lihat Menggunakan Pustaka Run-Time.
CL meneruskan nama file .obj, bersama dengan nama MYGRAPH.lib, ke linker. Linker menyelesaikan referensi eksternal sebagai berikut:
Dalam MAIN.obj, referensi ke
func1
diselesaikan menggunakan definisi dalam MOD1.obj; referensi untukfunc2
diselesaikan menggunakan definisi dalam MOD2.obj.Dalam MOD1.obj, referensi ke
printf_s
danscanf_s
diselesaikan menggunakan definisi di pustaka yang ditemukan linker bernama dalam MOD1.obj.Dalam MOD2.obj, referensi ke
myline
danmycircle
diselesaikan menggunakan definisi di MYGRAPH.lib.