Apakah arahan kompilasi sistem linux

青灯夜游
Lepaskan: 2022-11-09 19:22:02
asal
5396 orang telah melayarinya

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.

Apakah arahan kompilasi sistem linux

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.

Pengenalan Membuat

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.

Cara Make berfungsi

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.

>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
Salin selepas log masuk

Berikut ialah kandungan projek:

$ ls 
anotherTest.c Makefile test.c test.h
Salin selepas log masuk

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
Salin selepas log masuk

Sekarang mari kita lihat beberapa contoh arahan make aplikasi di bawah Linux:

1 Contoh mudah

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

Anda boleh melihat semua fail .o dan ujian fail boleh laku telah 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 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
Salin selepas log masuk

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.

3. Gunakan pilihan -d untuk mencetak maklumat penyahpepijatan

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--
Salin selepas log masuk

Ini adalah output yang sangat panjang, anda juga melihat bahawa saya menggunakan perintah more untuk memaparkannya halaman demi halaman keluaran.

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
Salin selepas log masuk

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
Salin selepas log masuk

你能看到 make 命令首先切到特定的目录下,在那执行,然后再切换回来。

5. 通过 -f 选项将其它文件看作 Makefile

如果你想将重命名 Makefile 文件,比如取名为 my_makefile 或者其它的名字,我们想让 make 将它也当成 Makefile,可以使用 -f 选项。

make -f my_makefile
Salin selepas log masuk

通过这种方法,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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan