久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Debian編譯工具

2024-02-06 236

Debian 中,有多種編譯工具可用于幫助開發(fā)人員編譯和構(gòu)建他們的程序。其中包括 make、Autotools和 Meson,這些編譯工具在 Debian 中得到良好的支持,并且可通過軟件包管理器進行安裝和使用。本篇教程將詳細介紹Debian編譯工具。

編譯工具軟件包列表:

軟件包 流行度 大小 文檔
make V:152, I:556 1592 通過 make-doc 包提供“info make”
autoconf V:31, I:232 2025 由 autoconf-doc 包提供“info autoconf”
automake V:31, I:231 1837 由 automake1.10-doc 包提供“info automake”
libtool V:26, I:215 1213 由 libtool-doc 包提供”info libtool”
cmake V:16, I:115 36695 cmake(1) 跨平臺、開源的編譯系統(tǒng)
ninja-build V:6, I:40 428 ninja(1) 接近 Make 精髓的小編譯系統(tǒng)
meson V:3, I:22 3741 meson(1) 在 ninja 之上的高生產(chǎn)力的構(gòu)建系統(tǒng)
xutils-dev V:0, I:9 1484 imake(1),xmkmf(1) 等。

一、make

Make 是一個維護程序組的工具。一旦執(zhí)行 make(1),make 會讀取規(guī)則文件 Makefile,自從上次目標文件被修改后,如果目標文件依賴的相關(guān)文件發(fā)生了改變,那么就會更新目標文件,或者目標文件不存在,那么這些文件更新可能會同時發(fā)生。

規(guī)則文件的語法如下所示:

target: [ prerequisites ... ]
[TAB] command1
[TAB] -command2 # ignore errors
[TAB] @command3 # suppress echoing

“[TAB]”表示制表符,它用于在shell腳本中進行代碼塊的縮進。在變量替換之后,shell會逐行解釋執(zhí)行腳本。如果一行代碼太長,可以使用行尾的反斜杠(”)來表示繼續(xù)到下一行。為了在shell腳本中獲取環(huán)境變量的值,可以使用兩個連續(xù)的美元符號($$)。

目標跟相關(guān)文件也可以通過隱式規(guī)則給出,例如,如下所示:

%.o: %.c header.h

在這里,目標包含了 “%” 字符 (只是它們中確切的某一個)。”%” 字符能夠匹配實際的目標文件中任意一個非空的子串。相關(guān)文件同樣使用 “%” 來表明它們是怎樣與目標文件建立聯(lián)系的。

自動變量的列表:

自動變量
$@ 當前目標
$< 首個相關(guān)文件
$? 所有較新的相關(guān)文件
$^ 所有相關(guān)文件
$* 目標模式中,$* 指代匹配符 “%” 匹配的部分

變量擴展的列表:

變量擴展 說明
foo1 := bar 一次性擴展
foo2 = bar 遞歸擴展
foo3 += bar 增加

運行 “make -p -f/dev/null” 命令來查看內(nèi)部自動化的規(guī)則。

二、Autotools

Autotools 是一套工具集,旨在幫助開發(fā)者將源代碼軟件包移植到多種類 Unix 系統(tǒng)上。它根據(jù)“configure.ac”文件生成一個 shell 腳本“configure”。這個“configure”腳本用于自動檢測系統(tǒng)特性和依賴關(guān)系,以便從“Makefile.in”模板生成適合當前系統(tǒng)的“Makefile”。Automake 則是根據(jù)“Makefile.am”文件生成“Makefile.in”的工具。它簡化了“Makefile”的創(chuàng)建過程,使之更符合GNU編碼標準。

Libtool是一個shell腳本工具,用于在編譯共享庫時自動處理與軟件移植性相關(guān)的問題,確保庫的正確鏈接和安裝。

1、編譯并安裝程序

當安裝編譯好的程序的時候,注意不要覆蓋系統(tǒng)文件。

Debian 不會在 “/usr/local” 或 “/opt” 目錄下創(chuàng)建文件。如果想要源碼編譯程序,把它安裝到 “/usr/local/” 目錄下,因為這并不會影響到 Debian。

$ cd src
$ ./configure --prefix=/usr/local
$ make # this compiles program
$ sudo make install # this installs the files in the system

2、卸載程序

如果有源碼并且它使用 autoconf(1)/automake(1),如果能記得是怎樣配置它的話,執(zhí)行如下的命令來卸載程序。

$ ./configure all-of-the-options-you-gave-it
$ sudo make uninstall

或者,如果十分確信安裝進程把文件都放在了 “/usr/local/” 下并且這里沒什么重要的東西,可以通過如下的命令來清除它所有的內(nèi)容。

# find /usr/local -type f -print0 | xargs -0 rm -f

如果不確定文件被安裝到了哪里,可以考慮使用 checkinstall 軟件包中的 checkinstall(8),它將會提供一個清晰的卸載路徑?,F(xiàn)在,它支持創(chuàng)建帶有 “-D” 選項的 Debian 軟件包。

三、Meson

隨著軟件開發(fā)的不斷演進,構(gòu)建系統(tǒng)也在不斷進步。自90年代起,Autotools作為一套可移植構(gòu)建架構(gòu),在Make的基礎(chǔ)上成為了事實上的標準,但它的處理速度相對較慢。

CMake于2000年推出,顯著地提升了構(gòu)建速度,盡管它仍然基于本質(zhì)上較慢的Make系統(tǒng)。不過,現(xiàn)在CMake可以使用Ninja作為其后端構(gòu)建工具。

Ninja在2012年發(fā)布,目標是取代Make,以進一步加快構(gòu)建速度。它的設(shè)計允許其他上層構(gòu)建系統(tǒng)生成輸入文件。

Meson于2013年推出,是一個較新且流行的構(gòu)建系統(tǒng),它不僅速度快,而且屬于上層構(gòu)建系統(tǒng),默認使用Ninja作為后端工具,從而充分利用了Ninja的速度優(yōu)勢。

  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請注明出處“站長百科”和原文地址。
Debian編譯工具
上一篇: Debian調(diào)試
Debian編譯工具
下一篇: Kubernetes對象管理