Rumah >Operasi dan penyelenggaraan >operasi dan penyelenggaraan linux >Apakah arahan kompilasi sistem linux
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 mengurus tugas penyusunan automatik untuk atur cara yang besar, secara automatik menentukan bahawa bahagian tertentu program itu perlu disusun semula dan mengeluarkan arahan penyusunan.
Persekitaran pengendalian tutorial ini: sistem linux7.3, komputer Dell G3.
Arahan make di bawah Linux ialah salah satu arahan yang paling kerap digunakan oleh pentadbir sistem dan pengaturcara. Pentadbir menggunakannya untuk menyusun dan memasang banyak alatan sumber terbuka melalui baris arahan, dan pengaturcara menggunakannya untuk mengurus masalah penyusunan projek besar dan kompleks mereka. Dalam artikel ini kita akan menggunakan beberapa contoh untuk membincangkan mekanisme kerja di sebalik arahan make.
make ialah program utiliti untuk sistem Linux. Ia digunakan untuk mengurus tugas penyusunan automatik untuk atur cara yang besar, secara automatik menentukan bahawa bahagian tertentu program itu perlu disusun semula dan mengeluarkan arahan penyusunan. 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 mengetahui mekanik di sebaliknya, arahan make menerima sasaran sama seperti argumen baris arahan. Matlamat ini biasanya disimpan dalam fail khas bernama "Makefile", dan fail juga mengandungi operasi yang sepadan dengan matlamat. Untuk maklumat lanjut, baca siri artikel ini tentang cara Makefiles berfungsi.
Apabila arahan make dilaksanakan buat kali pertama, ia mengimbas Makefile untuk mencari sasaran dan kebergantungannya. Jika kebergantungan ini adalah sasaran sendiri, teruskan mengimbas Makefile untuk kebergantungan ini untuk mewujudkan kebergantungan mereka, dan kemudian menyusunnya. Sebaik sahaja kebergantungan utama disusun, maka sasaran utama disusun (yang dihantar 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 arahan make aplikasi di bawah Linux:
Untuk menyusun keseluruhan projek, anda boleh menggunakan make
atau menambah sasaran all
selepas pembuatan. perintah.
$ 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 dengan arahan buat dan sasaran sebenar.
Jika anda melihat 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 melakukannya sesuatu seperti ini pada fail test.c Beberapa pengubahsuaian, gunakan semula buat untuk menyusun projek:
$ make
gcc -c -Wall test.c
gcc -Wall test.o anotherTest.o -o test
Anda boleh melihat bahawa hanya test.o yang disusun semula, tetapi yang lain Test.o tidak dikompilasi semula.
Sekarang bersihkan semua fail sasaran dan ujian boleh laku, anda boleh menggunakan sasaran clean
:
$ make clean
rm -rf *.o test$ ls
anotherTest.c Makefile test.c test.h
Anda boleh melihat semua fail .o dan ujian fail boleh laku telah dipadamkan.
Sekarang, anda mungkin perasan bahawa arahan buat tidak menyusun sasaran tersebut sejak binaan terakhir. Tiada fail yang diubah, tetapi jika anda ingin mengatasi tingkah laku 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 boleh melihat bahawa walaupun arahan make tidak akan menyusun sebarang fail, namun make -B
akan memaksa penyusunan semua objek fail dan Fail boleh laku akhir.
Jika anda ingin tahu perkara yang dibuat sebenarnya apabila ia dilaksanakan, gunakan pilihan -d.
Ini adalah 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 memaparkannya halaman demi halaman keluaran.
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 ../make-dir / direktori, Anda boleh melakukan 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
你能看到 make 命令首先切到特定的目录下,在那执行,然后再切换回来。
如果你想将重命名 Makefile 文件,比如取名为 my_makefile 或者其它的名字,我们想让 make 将它也当成 Makefile,可以使用 -f 选项。
make -f my_makefile
通过这种方法,make 命令会选择扫描 my_makefile 来代替 Makefile。
相关推荐:《Linux视频教程》
Atas ialah kandungan terperinci Apakah arahan kompilasi sistem linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!