Makefile ialah format fail yang biasa digunakan dalam sistem Linux. Ia boleh digunakan untuk menerangkan proses penyusunan dan kebergantungan program, membolehkan pengguna menggunakan arahan make dengan mudah untuk membina dan mengurus program. Kelebihan Makefile ialah kesederhanaan, fleksibiliti dan mudah alih, tetapi ia juga mempunyai beberapa kelemahan, seperti kelajuan kompilasi yang perlahan, penggunaan sumber yang tinggi dan kompilasi berulang. Jadi, bagaimana untuk mengoptimumkan prestasi Makefile dan meningkatkan kelajuan dan kecekapan kompilasi di bawah Linux? Artikel ini akan memperkenalkan anda kepada beberapa kaedah pengoptimuman prestasi untuk Linux Makefiles, seperti menggunakan kompilasi selari, kompilasi tambahan, fail pengepala prapenyusun, caching hasil kompilasi, dsb., supaya anda boleh menggunakan dan menulis Makefiles dengan lebih baik di bawah Linux.
Bagaimanakah dua operator tugasan ‘:=’ dan ‘=’ mempengaruhi kelajuan penyusunan? Rahsianya terletak pada maksud pentingnya Jika anda memahaminya dengan teliti, anda tidak akan mempunyai sebarang keraguan Blogger juga berfikir panjang dan mencari banyak maklumat Internet, dan akhirnya disedarkan oleh kata-kata catatan blog ini! Sila klik di sini untuk melihat catatan blog ini
Contohnya adalah seperti berikut:
foo = $(bar) bar = $(ugh) ugh = $(Huh) all: @echo $(foo) Huh = AfterTarget
make之后其结果为 : AfterTarget 其整个执行过程如下: 首先“$(foo)”被替换为“$(bar)”, 接下来 “$(bar)”被替换为“$(ugh)”, “$(ugh)”被替换为“$(Huh)”, 最后$(Huh)被替换为“AfterTarget”。 整个替换的过程是在执行“echo $(foo)”是进行的。
Nota: Keseluruhan proses penggantian dilakukan apabila "echo $(foo)" dilaksanakan.
Contohnya adalah seperti berikut:
x := foo y := $(x) bar x := xyz
Dalam contoh di atas, nilai y akan menjadi foo bar dan bukannya bar xyz.
Di atas adalah penerangan asas bagi kedua-dua pengendali tugasan ini Berikut adalah penerangan terperinci tentang bagaimana ia mempengaruhi kelajuan penyusunan!
Contohnya adalah seperti berikut:
TmpDir = /Source #此处随意定义了一个目录, #但切记在实际编写的 Makefile 中,不要在赋值语句后面写注释, #否则会把 /Source 到 # 之间的空格也算进去的。 #在下面引用该变量的时候实际上‘/Source_’最后还多了一个空格 #为了表示清楚,我用下划线表示空格,这样的目录肯定是不存在的 #以下语句调用了Shell函数,其结果是把指定目录下的所有源文件赋值给 x 变量, #两者取其一运行make #x := $(shell cd $(TmpDir); ls *.c) x = $(shell cd $(TmpDir); ls *.c) all: @echo $(x) @echo $(x) @echo $(x)
Melalui artikel ini, anda harus mempunyai pemahaman asas tentang beberapa kaedah pengoptimuman prestasi Linux Makefile, dan mengetahui cara untuk meningkatkan kelajuan dan kecekapan kompilasi, seperti menggunakan kompilasi selari, kompilasi inkremental, fail pengepala yang telah disusun sebelumnya, keputusan kompilasi caching, dsb. Anda juga harus memahami prinsip dan kesan pengoptimuman prestasi Makefile, dan cara menggunakan dan mengkonfigurasi kaedah ini dengan betul di bawah Linux. Kami mengesyorkan bahawa apabila menggunakan Makefile, anda memilih kaedah pengoptimuman prestasi yang sesuai berdasarkan projek anda sendiri dan perlu meningkatkan kualiti binaan dan kelajuan program. Pada masa yang sama, kami juga mengingatkan anda untuk memberi perhatian kepada beberapa isu dan cabaran yang berpotensi apabila menggunakan Makefiles, seperti keserasian, kestabilan, kebolehselenggaraan, dsb. Saya harap artikel ini dapat membantu anda menggunakan sistem Linux dengan lebih baik dan membolehkan anda menikmati faedah dan kemudahan pengoptimuman prestasi Makefile di bawah Linux.
Atas ialah kandungan terperinci Pengoptimuman prestasi Linux Makefile: Bagaimana untuk meningkatkan kelajuan dan kecekapan kompilasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!