Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Cara menggunakan arahan kompilasi sistem linux

Cara menggunakan arahan kompilasi sistem linux

PHPz
PHPzke hadapan
2023-05-23 17:20:092216semak imbas

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.

Pengenalan Membuat

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.

How Make Works

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.

>Buat contoh arahan

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:

1

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 .

2 Jadikan semua sasaran sentiasa dibina semula dengan pilihan -B

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.

3. Gunakan pilihan -d untuk mencetak maklumat penyahpepijatan

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.

4 Gunakan pilihan -C untuk menukar direktori

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.

5 Gunakan pilihan -f untuk menganggap fail lain sebagai Makefile

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam