GNU/Linux >> Belajar Linux >  >> Linux

Linux membuat Perintah Dijelaskan Dengan Contoh

membuat command di Linux adalah salah satu perintah yang paling sering digunakan oleh administrator sistem dan programmer. Meskipun membantu administrator dalam mengkompilasi dan menginstal banyak utilitas open source melalui baris perintah, programmer menggunakannya untuk mengelola kompilasi proyek besar dan rumit mereka. Pada artikel ini, kita akan membahas cara kerja internal make perintah bersama dengan beberapa contoh praktis.

Bagaimana membuat Perintah Bekerja

Bagi mereka yang tidak sadar, perintah make menerima target sebagai argumen baris perintah. Target ini biasanya ditentukan dalam file bernama 'Makefile', yang juga berisi tindakan terkait yang sesuai dengan target. Untuk informasi lebih lanjut, baca rangkaian artikel kami tentang cara kerja Makefiles.

Ketika perintah make dijalankan untuk pertama kalinya, ia memindai Makefile untuk menemukan target (disediakan untuk itu) dan kemudian membaca dependensinya. Jika dependensi ini adalah target itu sendiri, ia memindai Makefile untuk target ini dan membangun dependensinya (jika ada), lalu membangunnya. Setelah dependensi utama dibangun, ia kemudian membangun target utama (yang diteruskan ke perintah make).

Sekarang, misalkan Anda membuat perubahan hanya pada satu file sumber dan Anda menjalankan perintah make lagi, itu hanya akan mengkompilasi file objek yang sesuai dengan file sumber tersebut, dan karenanya akan menghemat banyak waktu dalam mengkompilasi executable akhir.

membuat Contoh Perintah

Berikut adalah detail lingkungan pengujian yang digunakan untuk artikel ini :

  • OS – Ubuntu 13.04
  • Shell – Bash 4.2.45
  • Aplikasi – GNU Make 3.81

Berikut adalah isi dari proyek :

$ ls
anotherTest.c Makefile test.c test.h

dan ini isi Makefilenya :

all: test

test: test.o anotherTest.o
        gcc -Wall test.o anotherTest.o -o test

test.o: test.c
        gcc -c -Wall test.c

anotherTest.o: anotherTest.c
        gcc -c -Wall anotherTest.c

clean:
        rm -rf *.o test

Sekarang, mari kita lihat beberapa contoh penggunaan perintah make di Linux.

1) Contoh sederhana

Untuk mengkompilasi proyek, Anda dapat menggunakan 'make' atau menggunakan target 'all' dengan perintah make.

$ make
gcc -c -Wall test.c
gcc -c -Wall anotherTest.c
gcc -Wall test.o anotherTest.o -o test

Jadi Anda dapat melihat bahwa perintah make pertama-tama membuat dependensi dan kemudian target yang sebenarnya.

Jika Anda melihat isi direktori, akan ada file .o dan file executable di dalamnya :

$ ls
anotherTest.c anotherTest.o Makefile test test.c test.h test.o

Sekarang, misalkan Anda membuat beberapa perubahan di test.c dan mengkompilasi ulang proyek dengan make :

$ make
gcc -c -Wall test.c
gcc -Wall test.o anotherTest.o -o test

Jadi Anda dapat melihat bahwa hanya test.o yang dikompilasi ulang, sedangkan anotherTest.o tidak dikompilasi ulang.

Sekarang, untuk membersihkan semua file objek beserta executable 'test', Anda dapat menggunakan target 'clean' :

$ make clean
rm -rf *.o test

$ ls
anotherTest.c Makefile test.c test.h

Jadi Anda dapat melihat bahwa semua file .o dan 'test' yang dapat dieksekusi telah dihapus.

2) Selalu buat semua target melalui opsi -B

Sekarang, Anda mungkin menyadari bahwa perintah make tidak mengkompilasi file-file yang tidak berubah sejak terakhir kali. Namun, jika Anda ingin mengganti perilaku default make, Anda dapat menggunakan opsi -B.

Ini contohnya :

$ make
make: Nothing to be done for `all'.

$ make -B
gcc -c -Wall test.c
gcc -c -Wall anotherTest.c
gcc -Wall test.o anotherTest.o -o test

Jadi Anda dapat melihat bahwa sementara perintah 'make' tidak mengkompilasi file apapun, 'make -B' secara paksa mengkompilasi semua objek bersama dengan executable akhir.

3) Cetak informasi debug menggunakan opsi -d

Jika Anda ingin akun terperinci tentang apa yang sebenarnya dilakukan perintah make saat dijalankan, gunakan opsi -d.

Ini contohnya :

$ make -d | more
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-pc-linux-gnu
Reading makefiles...
Reading makefile `Makefile'...
Updating makefiles....
Considering target file `Makefile'.
Looking for an implicit rule for `Makefile'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.o'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.c'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.cc'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.C'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.cpp'.
Trying pattern rule with stem `Makefile'.
--More--

Ini adalah keluaran yang panjang. Anda dapat melihat bahwa saya menggunakan lebih perintah untuk melihat output halaman demi halaman. Anda harus melihatnya sendiri untuk mendapatkan gambaran yang lebih baik tentang detail yang dapat dihasilkan oleh opsi ini.

4) Ubah direktori menggunakan opsi -C

Anda dapat memberikan jalur direktori yang berbeda ke perintah make, yang akan dialihkan sebelum mencari Makefile.

Berikut adalah contoh. Misalkan Anda saat ini berada di direktori ini :

$ ls
file file2 frnd frnd1.cpp log1.txt log3.txt log5.txt
file1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt

Tetapi Anda ingin menjalankan make dengan Makefile yang disimpan di ../make-dir/. Jadi inilah yang harus Anda lakukan :

$ make -C ../make-dir/
make: Entering directory `/home/himanshu/practice/make-dir'
make: Nothing to be done for `all'.
make: Leaving directory `/home/himanshu/practice/make-dir'

Jadi Anda dapat melihat bahwa perintah make dialihkan ke direktori yang ditentukan, dieksekusi di sana, lalu dialihkan kembali.

5) Perlakukan file lain sebagai 'Makefile' melalui opsi -f

Jika Anda ingin mengganti nama Makefile Anda menjadi misalkan 'my_makefile' atau nama lainnya, dan ingin perintah make memperlakukannya seperti 'Makefile' default, Anda dapat menggunakan opsi -f untuk ini.

Ini contohnya :

make -f my_makefile

Dengan cara ini perintah make akan memilih dan memindai my_makefile alih-alih Makefile.


Linux
  1. Perintah shutdown Linux Dijelaskan dengan Contoh

  2. Perintah nslookup Linux Dijelaskan Dengan Contoh

  3. Perintah Traceroute Linux, Dijelaskan dengan Contoh

  1. Perintah wc Linux dengan Contoh

  2. Perintah JQ di Linux dengan Contoh

  3. perintah whoami di Linux dijelaskan dengan contoh

  1. Perintah potong Linux Dijelaskan dengan 6 Contoh

  2. Perintah ip Linux dengan Contoh

  3. Perintah Linux ldd Dijelaskan dengan Contoh