Mengompilasi Banyak Berkas
Bangun program dengan banyak berkas.
Mengompilasi Banyak Berkas adalah pelajaran C Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C Academy mencakup 4 pelajaran total.
Dari Sumber Menjadi Program
Mengubah sumber C yang terdiri atas beberapa berkas menjadi program yang dapat dijalankan berlangsung dalam dua tahap: kompilasi dan penautan.
Setiap berkas .c dikompilasi secara terpisah menjadi berkas objek. Kemudian penaut menggabungkan semua berkas objek, menyelesaikan referensi di antara berkas tersebut, menjadi satu program yang dapat dijalankan.
Pembangunan dengan Satu Perintah
Pendekatan paling sederhana memberikan semua berkas sumber kepada gcc sekaligus. Kompilator membangun setiap berkas, lalu menautkannya secara otomatis.
Bendera -o memberi nama pada program keluaran. Cantumkan semua berkas .c; tajuk disertakan melalui #include dan tidak dicantumkan di sini.
gcc main.c math_utils.c -o appKompilasi Terpisah
Untuk proyek yang lebih besar, kompilasikan setiap berkas menjadi berkas objek dengan -c. Ini menghasilkan berkas .o dan tidak melakukan penautan.
Kompilasi secara terpisah berarti perubahan pada satu sumber hanya mengharuskan Anda mengompilasi ulang berkas tersebut, sehingga pembangunan proyek besar menjadi lebih cepat.
gcc -c main.c /* produces main.o */
gcc -c math_utils.c /* produces math_utils.o */Tahap Penautan
Setelah memiliki berkas objek, tautkan semuanya menjadi program yang dapat dijalankan. Di sini gcc bertindak sebagai penaut, menggabungkan objek dan menyelesaikan simbol lintas berkas.
Kali ini tidak ada -c karena kita menginginkan program akhir, bukan berkas objek lain.
gcc main.o math_utils.o -o appTugas Penaut
Penaut mencocokkan setiap penggunaan simbol dengan definisinya.
Saat main.o memanggil add, penaut menemukan add yang didefinisikan dalam math_utils.o dan menghubungkan keduanya. Penaut juga menyertakan kode pustaka standar yang diperlukan program Anda.
Galat Referensi Tak Terdefinisi
Jika Anda lupa menyertakan sebuah berkas objek saat menautkan, penaut tidak dapat menemukan definisinya dan melaporkan referensi tak terdefinisi.
Ini adalah galat pada waktu penautan, bukan galat kompilasi: setiap berkas berhasil dikompilasi, tetapi definisi yang diperlukan tidak ada dalam perintah akhir.
gcc main.o -o app
/* undefined reference to `add' */
/* fix: include math_utils.o */Bendera Peringatan yang Berguna
Selalu kompilasikan dengan peringatan yang diaktifkan. -Wall dan -Wextra menampilkan kemungkinan bug lebih awal.
Menambahkan -std=c11 memilih standar bahasa sehingga perilakunya dapat diprediksi di berbagai kompilator. Bendera-bendera ini berfungsi baik saat Anda mengompilasi dalam satu tahap maupun secara terpisah.
gcc -Wall -Wextra -std=c11 -c main.c
gcc -Wall -Wextra -std=c11 -c math_utils.c
gcc main.o math_utils.o -o appJalur Penyertaan
Saat tajuk berada di direktori lain, beri tahu kompilator tempat mencarinya dengan -I.
Contohnya, -Iinclude menambahkan folder include/ ke jalur pencarian, sehingga #include "math_utils.h" dapat ditemukan meskipun dipanggil dari folder lain.
gcc -Iinclude -c src/main.c -o build/main.oPentingnya Kompilasi Ulang
Kompilasi terpisah sangat bermanfaat saat hanya satu berkas yang berubah. Anda cukup mengompilasi ulang objek berkas tersebut, lalu menautkannya kembali.
Namun, jika Anda mengedit sebuah tajuk, setiap sumber yang menyertakannya harus dikompilasi ulang karena teks tajuk tersebut menjadi bagian dari setiap sumber itu.
/* edited math_utils.c only */
gcc -c math_utils.c
gcc main.o math_utils.o -o appOtomatisasi dengan make
Mengetikkan perintah secara manual lama-kelamaan menjadi merepotkan. Sebuah Makefile mencatat aturan dan hanya membangun ulang bagian yang berubah.
Contoh minimal ini menautkan dua objek menjadi app; make melacak stempel waktu berkas untuk menentukan berkas mana yang perlu dikompilasi ulang.
app: main.o math_utils.o
gcc main.o math_utils.o -o app
main.o: main.c math_utils.h
gcc -c main.cRingkasan Pembangunan Lengkap
Berikut seluruh alur untuk proyek kecil, dari objek hingga program selesai dengan peringatan yang diaktifkan.
Kompilasikan setiap sumber, lalu tautkan objek-objeknya. Jalankan hasilnya untuk memastikan semuanya bekerja dari awal hingga akhir.
gcc -Wall -c main.c
gcc -Wall -c math_utils.c
gcc main.o math_utils.o -o app
./appPeriksa Cepat
Periksa pemahaman Anda tentang proses pembangunan yang melibatkan beberapa berkas.
Ringkasan
Anda telah mempelajari cara mengompilasi setiap berkas .c menjadi objek dengan -c, lalu menautkan objek-objek tersebut menjadi program. Gunakan -Wall dan -I untuk peringatan dan jalur penyertaan.
Referensi tak terdefinisi berarti ada objek yang hilang saat penautan. Alat seperti make mengotomatiskan pembangunan ulang hanya pada bagian yang berubah.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengompilasi Banyak Berkas” gratis?
Ya — teks lengkap “Mengompilasi Banyak Berkas” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C Academy, upgrade ke CoddyKit PRO. Kursus C Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mengompilasi Banyak Berkas”?
Bangun program dengan banyak berkas. Kamu berlatih C Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C Academy?
Tidak diperlukan pengalaman sebelumnya. C Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Mengompilasi Banyak Berkas” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C Academy ini?
Ya. Setiap pelajaran C Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Berkas Header dan Sumber
- Penjaga Penyertaan
- extern dan Penautan
- Mengompilasi Banyak Berkas