Arahan kompilasi sistem Linux ialah "Buat". Dalam sistem Linux, make ialah perintah kompilasi yang sangat penting Pentadbir menggunakannya untuk menyusun dan memasang banyak alat sumber terbuka melalui baris arahan Pengaturcara menggunakannya untuk mengurus isu kompilasi projek besar dan kompleks mereka. Make digunakan untuk mengautomasikan tugas menyusun atur cara besar Ia secara automatik boleh mengesan bahagian program yang perlu disusun semula dan mengeluarkan arahan kompilasi yang sepadan.
make ialah program utiliti untuk sistem Linux. Ia digunakan untuk mengurus tugas kompilasi automatik atur cara besar, secara automatik menentukan bahagian program mana yang perlu disusun semula dan menghantar arahan kompilasi. Walaupun, kami paling biasa menggunakannya dalam penyusunan program bahasa C. Walau bagaimanapun, make tidak terhad kepada bahasa tertentu Make boleh digunakan dalam mana-mana bahasa yang boleh menjalankan pengkompil melalui arahan shell. Selain itu, anda juga boleh menggunakan make untuk menerangkan sebarang tugas binaan yang mana fail perlu dikemas kini secara automatik selepas fail bergantung pada perubahan.
Bagi mereka yang tidak biasa dengan mekanik di belakangnya, arahan Make menerima sasaran sama seperti argumen baris arahan. Biasanya, operasi ini disimpan dalam fail khas yang dipanggil "Makefile" dan sepadan dengan sasaran. Untuk mendapatkan maklumat lanjut, baca siri artikel ini tentang cara Makefiles berfungsi.
Kali pertama arahan Make dilaksanakan, ia mengimbas Makefile untuk mencari sasaran dan kebergantungan yang sepadan. Jika kebergantungan ini juga perlu disusun ke dalam sasaran, teruskan imbas Makefile dan wujudkan kebergantungan mereka, dan kemudian susun. Sebaik sahaja kebergantungan utama selesai menyusun, sasaran utama disusun (ini dimasukkan melalui arahan buat).
Sekarang, dengan mengandaikan anda telah mengubah suai fail sumber tertentu dan anda melaksanakan perintah make sekali lagi, ia hanya akan menyusun fail sasaran yang berkaitan dengan fail sumber Oleh itu, menyusun fail boleh laku akhir menjimatkan banyak wang. masa.
Berikut ialah persekitaran ujian yang digunakan dalam artikel ini:
OS —— Ubunut 13.04 Shell —— Bash 4.2.45 Application —— GNU Make 3.81
Berikut ialah kandungan projek:
$ ls anotherTest.c Makefile test.c test.h
Berikut ialah kandungan Makefile:
all: test test: test.o anotherTest.o gcc -Wall test.o anotherTest.o -o testtest.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 aplikasi arahan buat di bawah Linux:
Untuk menyusun keseluruhan projek, anda boleh menggunakan make
atau melepasi sasaran all
selepas arahan buat.
$ make gcc -c -Wall test.c gcc -c -Wall anotherTest.c gcc -Wall test.o anotherTest.o -o test
Anda boleh melihat kebergantungan yang dibuat buat kali pertama oleh arahan make dan sasaran sebenar.
Jika anda menyemak kandungan direktori sekali lagi, terdapat beberapa lagi fail .o dan fail boleh laku di dalamnya:
$ ls anotherTest.c anotherTest.o Makefile test test.c test.h test.o
Sekarang, andaikan anda telah membuat beberapa pengubahsuaian pada fail test.c, gunakan buat untuk menyusun projek sekali lagi :
$ make gcc -c -Wall test.c gcc -Wall test.o anotherTest.o -o test
Anda boleh melihat bahawa hanya test.o dikompilasi semula, tetapi Test.o yang lain tidak dikompilasi semula.
Sekarang bersihkan semua fail sasaran dan ujian fail boleh laku, anda boleh menggunakan sasaran clean
:
$ make clean rm -rf *.o test$ ls anotherTest.c Makefile test.c test.h
Anda boleh melihat bahawa semua fail .o dan ujian fail boleh laku dipadamkan .
Sekarang, anda mungkin perasan bahawa arahan buat tidak menyusun sasaran tersebut sejak binaan terakhir. Tiada fail yang diubah, tetapi jika anda ingin mengatasi kelakuan lalai make, anda boleh menggunakan pilihan -B.
Berikut ialah contoh:
$ 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
Anda dapat melihat bahawa walaupun arahan make tidak akan menyusun sebarang fail, make -B
akan memaksa penyusunan semua fail objek dan fail boleh laku terakhir.
Jika anda ingin tahu perkara yang dibuat sebenarnya apabila ia dilaksanakan, gunakan pilihan -d.
Berikut ialah contoh:
$ 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 output yang sangat panjang, anda juga melihat bahawa saya menggunakan perintah more
untuk memaparkan halaman keluaran demi halaman.
Anda boleh menyediakan laluan direktori yang berbeza untuk arahan make, yang akan menukar direktori sebelum mencari Makefile. .
Ini ialah direktori, dengan andaian anda berada dalam direktori semasa:
$ 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 fail Makefile bagi arahan make yang anda mahu jalankan disimpan dalam direktori ../make-dir/ , anda boleh Lakukan ini:
$ 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
Anda boleh melihat bahawa arahan make mula-mula bertukar ke direktori tertentu, melaksanakannya di sana, dan kemudian bertukar kembali.
Jika anda ingin menamakan semula fail Makefile, seperti my_makefile atau nama lain, kami Jika anda ingin membuat menganggapnya sebagai Makefile, gunakan pilihan -f.
make -f my_makefile
Dengan cara ini, arahan make akan memilih untuk mengimbas my_makefile dan bukannya Makefile.
Atas ialah kandungan terperinci Cara menggunakan arahan kompilasi sistem linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!