色偷偷91综合久久噜噜-色偷偷成人-色偷偷尼玛图亚洲综合-色偷偷人人澡久久天天-国内精品视频一区-国内精品视频一区二区三区

Hello! 歡迎來到小浪云!


Hacker基礎(chǔ)之Linux篇:進階Linux命令一


今天我們將深入探討一些更高級的linux知識,具體來說是關(guān)于linux c程序的構(gòu)建。

在日常的IT生活中,我們經(jīng)常需要在源碼環(huán)境下編譯并安裝軟件。這也是開源軟件的一個顯著特點,而Windows中的閉源軟件通常不提供這種源碼編譯安裝的方式。

程序的構(gòu)建過程通常會經(jīng)歷以下幾個階段:

配置

配置階段的目的是檢查當(dāng)前環(huán)境是否滿足安裝該軟件的依賴關(guān)系。這可以被視為開源軟件的一個缺點,因為開源軟件的開發(fā)者通常使用其他開源庫或工具來構(gòu)建自己的程序。當(dāng)我們想要運行他們的軟件時,就需要檢查我們的系統(tǒng)中是否已經(jīng)安裝了這些庫或工具。

此外,配置階段還包括設(shè)置一些安裝必需的信息,如安裝路徑、需要安裝的組件等。配置完成后,會生成一個Makefile文件,供下一步的make命令使用。

開源軟件的開發(fā)者通常會提供一個configure文件,這個文件是通過autotool等工具生成的。關(guān)于configure文件的生成涉及到其他工具的使用和C/c++的知識,這里就不深入介紹了。

我們可以通過以下命令查看configure文件的可用選項:

./configure --help

或者我們可以配置程序的安裝路徑:

./configure --prefix=/usr/local/my

通常,我建議直接使用開發(fā)者默認的配置:

./configure

這樣,程序會自動檢測我們的系統(tǒng)環(huán)境,并列出我們?nèi)鄙俚奈募?/p>

我們以一個名為Shadow的軟件為例進行演示。

Hacker基礎(chǔ)之Linux篇:進階Linux命令一

從開發(fā)者的網(wǎng)站下載并解壓這個軟件后,進入目錄,你會發(fā)現(xiàn)里面的結(jié)構(gòu)大致如下。

按照上述步驟執(zhí)行 ./configure 看看:

Hacker基礎(chǔ)之Linux篇:進階Linux命令一

之后你會看到,configure文件開始檢測系統(tǒng)環(huán)境是否滿足安裝需求。

通常,開發(fā)者會在其gitHub頁面上列出需要安裝的依賴包,我們可以根據(jù)我們的系統(tǒng)版本來查找這些依賴。

例如,這里我們可以在github上找到開發(fā)者提供的以下內(nèi)容:

Hacker基礎(chǔ)之Linux篇:進階Linux命令一

由于我們的系統(tǒng)是Fedora & RHEL類的,所以我們可以點擊這里查看需要安裝的依賴:

Hacker基礎(chǔ)之Linux篇:進階Linux命令一

安裝完依賴后,再次執(zhí)行 ./configure 就不會出現(xiàn)錯誤了:

Hacker基礎(chǔ)之Linux篇:進階Linux命令一

(我悄悄換了一臺已經(jīng)安裝好依賴的機器~)

接下來,我們可以進行下一步,編譯。

編譯

顧名思義,編譯就是將源文件進行編譯鏈接生成可執(zhí)行程序。

在執(zhí)行完上述配置步驟后,目錄中會出現(xiàn)一個Makefile文件。

你可能會說,我們之前已經(jīng)看到了Makefile文件了。好的,我們來對比一下執(zhí)行configure前后的區(qū)別。

以下是未執(zhí)行configure之前的,確實有Makefile.am和Makefile.in兩個文件,但它們并不是Makefile。

如果使用過automake的同學(xué)就會清楚這兩個文件的作用(不過這種同學(xué)可能不會來看這種文章哈哈哈):

Hacker基礎(chǔ)之Linux篇:進階Linux命令一

然后是執(zhí)行完 ./configure 之后的:

Hacker基礎(chǔ)之Linux篇:進階Linux命令一

已經(jīng)多出了幾個文件,最重要的是有了Makefile這個文件。

我們這里不討論Makefile是如何編寫的,這個比較復(fù)雜,一般需要寫c語言超過一年以上的同學(xué)才能完全理解,而且對于用戶來說,沒必要知道程序的編譯過程。

需要注意的是,Linux中的make命令會自動在當(dāng)前目錄下查找名為Makefile或makefile的文件來加載。

對于依賴較少且代碼結(jié)構(gòu)簡單的代碼,可以手動編寫Makefile,這樣可以省去第一步的配置工作。

但是對于依賴較多且代碼結(jié)構(gòu)復(fù)雜的項目,最好還是使用程序自動生成的Makefile。

這里簡單介紹一下在Linux下編譯文件。

假設(shè)我們有一個名為linux-test.c的C文件,如何編譯它?

可以使用gcc命令:

gcc linux-test.c -o lt

這里的linux-test.c是我們編寫的代碼,-o之后接的是我們希望編譯后程序的名字,這里是lt。

如果你編寫的是C++代碼,要使用g++命令。

好了,我們繼續(xù)編譯。一個文件我們可以用gcc,但是一文件的編譯,我們就需要用到make了。

現(xiàn)在我們有了Makefile文件,我們就可以執(zhí)行make了:

Hacker基礎(chǔ)之Linux篇:進階Linux命令一

這樣,程序就會自動鏈接和編譯文件了。

最后等待一會兒,編譯完成。

安裝

在Linux中,安裝就簡單多了。如果你完成了上述幾個步驟,只需將生成的可執(zhí)行程序復(fù)制到你想要的地方即可。

但是我們有一個簡單的命令:

make install

其實install是Makefile中的一個規(guī)則,我們可以打開Makefile來查看或編輯,但這是不建議的。

Hacker基礎(chǔ)之Linux篇:進階Linux命令一

之后,程序就會自動復(fù)制到代碼編寫者指定的地方了。

這樣,我們的程序就安裝完成了。

相關(guān)閱讀

主站蜘蛛池模板: 97就去色| 一级毛片私人影院免费 | 在线小毛片 | 日本一区不卡在线观看 | 香港经典av三级 | 日韩欧美视频 | 久久99影院网久久久久久 | 欧美无毛 | 国产激情一区二区三区四区 | 日韩免费网站 | 亚洲视频影院 | 福利一区福利二区 | 美女综合网 | 国产原创精品 | 久久精品国产第一区二区 | 日韩伦理在线播放 | 激情综合激情 | 免费黄色大片 | 狠狠综合久久综合88亚洲日本 | 激情综合网婷婷 | 国产dvd毛片在线视频 | 色偷偷91久久综合噜噜噜 | 国产三级观看 | 久久国产亚洲精品 | 色综合国产 | 亚洲欧美日韩精品一区 | 免费的色网站 | 一级黄色片在线看 | 日本欧美视频在线观看 | 天天舔天天射天天干 | 色黄视频网站 | 第四色激情网 | 欧美一区二区三区高清视频 | 美女网站免费久久久久久久 | 色天使亚洲综合在线观看 | 国产福利一区二区在线观看 | 亚洲区一区 | 一区二区精品视频 | 日韩三级一区二区三区 | 久久亚洲国产 | 国产精品一区二区三区四区 |