GNU Membuat

Tutorial Membuat GNU

Tutorial Membuat GNU

GNU Make adalah alat yang membantu menghasilkan program yang dapat dieksekusi dari kode sumber dan juga memproses file non-sumber lainnya dari proyek. Make mendapat logika membangun executable dan memproses file non-sumber lainnya dari file bernama a makefile atau Makefile.

Mengapa Membuat?

Memasang Make

Membuat saja tidak cukup untuk membangun program. Untuk membangun program dari sumber, Anda perlu menginstal kompiler dan alat lain di sistem Anda. Jadi, kami membutuhkan rangkaian lengkap alat pengembangan untuk tujuan kami.

Untuk mengkompilasi sumber di Linux, ada paket yang disebut "build-essential" pada sistem berbasis Debian (mis.g. Ubuntu, Linux Mint, dll) dan "Alat Pengembangan" di Red Hat dan CentOS.

Untuk menginstal ini pada sistem berbasis Debian:

apt-get install build-essential

Untuk menginstal ini di CentOS dan Red Hat jalankan:

yum groupinstall "Alat Pengembangan"

Memulai Makefile

Mari kita mulai dengan menulis Halo Dunia program dengan bahasa pemrograman C.

Fungsi utama dari program C kami akan berada di dalam halomain.c. Isi file akan terlihat seperti berikut:

#termasuk  int main()  kesenangan_saya(); kembali 0;  

Kode ini termasuk file header hellofun.h yang berisi deklarasi fungsi yang disebut hello_fun(). Konten hellofun.h adalah:

batalkan my_fun();

Definisi my_fun() hidup di dalam hellofun.c:

#termasuk  #termasuk  void my_fun()  printf("Halo Dunia!\n"); kembali; 

Ini adalah program yang sangat sederhana dan kami dapat mengompilasinya dengan gcc hanya dengan satu baris perintah. Tapi, program kehidupan nyata tidak sesederhana dan sekecil ini. Segalanya menjadi kompleks segera.  Di bawah ini, saya akan menulis skrip makefile yang diperlukan untuk mengkompilasi program hello world ini. Saya akan menjelaskan bagian yang berbeda di bagian selanjutnya.

hellomain: hellomain.c halo menyenangkan.c gcc -o halo halomain.c halomain.c -aku.

Simpan kode ini dalam file bernama makefile (tanpa ekstensi file apa pun). Letakkan file di direktori tempat file C berada. Arahkan baris perintah Anda ke direktori ini. Pada baris perintah tulis make dan tekan enter. File yang dapat dieksekusi bernama hello akan dibuat di direktori saat ini. Anda dapat memverifikasi hasilnya dengan menjalankan executable dengan perintah berikut.

./Halo

Keluaran:

Halo Dunia!

Aturan, Target, dan Dependensi

Skrip makefile adalah kumpulan aturan. Aturan menginstruksikan Membuat cara membangun target atau output dari sumber atau file lain. Aturan juga menentukan dependensi target. Aturan ketergantungan harus dijalankan terlebih dahulu tergantung pada apakah yang sudah diproses dengan melihat cap waktu. Dalam contoh kita makefile di atas, kami memiliki aturan dengan target bernama halomain dan dependensinya. Nama target dipisahkan oleh titik dua dari daftar ketergantungan. Perintah shell yang akan dieksekusi tercantum di baris berikut:. Perintah shell harus dimulai dengan karakter tab.

Jika Anda tidak menentukan parameter dengan perintah make maka target pertama akan dieksekusi. Dalam contoh kami, kami tidak menentukan parameter apa pun dan kami memiliki halomain sebagai target pertama dan satu-satunya.

Variabel

Variabel adalah cara yang bagus untuk menulis nilai sekali dan menggunakannya berkali-kali tanpa mengulangi nilainya berulang kali. Ini membantu kami menjaga kode kami KERING (Jangan Ulangi Sendiri). Jika Anda perlu mengubah beberapa nilai di seluruh skrip, Anda hanya perlu mengubahnya di satu tempat untuk mencerminkan perubahan di mana-mana jika Anda menggunakan variabel.

Dalam contoh kami, kami menggunakan gcc sebagai kompiler, tetapi kita mungkin perlu mengubah kompiler menjadi sesuatu yang lain. Jadi, kita dapat menyimpan nama kompiler dalam sebuah variabel. Juga, kita dapat menyimpan flag compiler di variabel lain untuk digunakan kembali. Untuk menetapkan nilai ke variabel kami menggunakan tanda sama dengan (=) dan untuk membaca variabel itu kami menggunakan $(variable_name).

CC=gcc CFLAGS=-I. hellomain: hellomain.c halo menyenangkan.c $(CC) -o halo halomain.c halomain.c $(CFLAGS)

Membersihkan Lingkungan

Kita mungkin sering perlu membersihkan lingkungan kita. Jika kita ingin setiap bagian dari proyek kita dibangun kembali dari awal, kita perlu membersihkannya. Dalam contoh sederhana kami, satu-satunya file yang dihasilkan adalah Halo dapat dieksekusi. Tanpa menghapusnya secara manual, kita dapat menghapusnya dengan make. Jadi, kita bisa membuat aturan untuk itu dan menamai targetnya sebagai bersih.

CC=gcc CFLAGS=-I. hellomain: halomain.c halo menyenangkan.c $(CC) -o halo halomain.c halomain.c $(CFLAGS) bersih: rm halo

Perintah shell di target bersih hanyalah perintah shell lama rm. Sekarang, dari baris perintah jalankan:

bersihkan

Lihat direktori saat ini untuk melihat bahwa Halo file yang dapat dieksekusi hilang.

Memperluas Contoh Kami Untuk Memecahkan Lebih Banyak Masalah

Dalam contoh kompilasi hello world sederhana kami, kami memiliki masalah yang belum kami pecahkan. halomain target melihat halo mian.c dan halo menyenangkan.c stempel waktu file saat berikutnya Anda mencoba mengkompilasi ulang dengan membuat atau buat hellomain. Jadi, jika Anda mengubah salah satu dari dua file itu, mereka akan dikompilasi ulang. Tapi, jika kamu berubah halo menyenangkan.h maka itu tidak akan dikompilasi ulang. Itu tidak terduga!

Sekali lagi, kami telah melewati level menengah. Kami tidak membuat file objek dan secara langsung membuat file yang dapat dieksekusi. Tapi, di balik layar, file objek dibuat di direktori sementara dan dihapus. Kami ingin membuat file objek sebelum membuat yang dapat dieksekusi. Kali ini kami menamai target utamanya sebagai semua

semua: hellomain.o halo menyenangkan.o gcc halomain.o halo menyenangkan.o -o halo halomain.o: halomain.c halo menyenangkan.h gcc -aku. -c halomain.c halo menyenangkan.o: halo menyenangkan.c halo menyenangkan.h gcc -aku. -c halo menyenangkan.c bersih: rm -rf *.o rm halo

Jalankan perintah make lagi untuk melihat apakah program Anda berhasil dibangun atau tidak. Jalankan halo yang dapat dieksekusi untuk memverifikasi hasilnya. Lihat direktori saat ini dan Anda akan melihat bahwa file objek telah dibuat. Kami telah menambahkan satu baris lagi ke target bersih untuk membersihkan file objek. Skrip makefile ini akan membantu mengkompilasi ulang program hello world bahkan jika: halo menyenangkan.h file diubah.

Kesimpulan

Make adalah salah satu alat paling penting untuk pengguna dan pemrogram linux. Jika Anda adalah pengguna akhir maka pengetahuan tentang make akan membantu Anda memperbaiki banyak hal yang rusak di dunia linux Anda. Jika Anda seorang programmer maka Anda tidak bisa pergi begitu saja dengan menulis kode dan biarkan pengguna Anda mengetahui cara mengkompilasi kode sumber itu ke executable. Anda harus membuat skrip makefile untuk pengguna akhir, sehingga mereka tidak memainkan permainan tebak-tebakan untuk mengkompilasi sumber Anda ke executable.

Referensi

Beranda Proyek GNUMake
GNU Membuat Dokumentasi

Tutorial OpenTTD
OpenTTD adalah salah satu game simulasi bisnis paling populer di luar sana. Dalam game ini, Anda perlu membuat bisnis transportasi yang luar biasa. Na...
SuperTuxKart untuk Linux
SuperTuxKart adalah judul hebat yang dirancang untuk memberi Anda pengalaman Mario Kart gratis di sistem Linux Anda. Ini cukup menantang dan menyenang...
Pertempuran untuk Tutorial Westnoth
The Battle for Wesnoth adalah salah satu game strategi open source terpopuler yang bisa kamu mainkan saat ini. Tidak hanya game ini telah dikembangkan...