0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在Linux下如何安裝和卸載源碼包呢

阿銘linux ? 來源:阿銘linux ? 作者:阿銘 ? 2022-11-10 09:42 ? 次閱讀

10.3 源碼編譯安裝軟件包

Linux下安裝源碼包是最常用的。在日常的管理工作中,阿銘的大部分軟件都是通過源碼安裝的。安裝源碼包,需要我們把源代碼編譯成可執(zhí)行的二進(jìn)制文件。

如果你能讀懂這些源代碼,就可以修改這些源代碼的自定義功能,然后再按你的需求編譯。使用源碼包除了可以自定義修改源代碼外,還可以定制相關(guān)的功能,因為源碼包在編譯時可以附加額外的選項。

源碼包的編譯用到了Linux系統(tǒng)里的編譯器。常見的源碼包一般都是用C語言開發(fā)的,因為C語言是Linux上最標(biāo)準(zhǔn)的程序語言。

Linux上的C語言編譯器稱為gcc,利用它可以把C語言編譯成可執(zhí)行的二進(jìn)制文件。所以,如果你的機器上沒有安裝gcc,就無法編譯源碼,你可以使用命令yuminstall -y gcc來完成安裝。

安裝源碼包通常需要以下3個步驟。

(1) ./configure

這一步可以定制功能,加上相應(yīng)的選項即可,具體有什么選項可以通過命令./configure --help來查看。這一步會自動檢測你的Linux系統(tǒng)與相關(guān)的套件是否有編譯該源碼包時所需要的庫,因為一旦缺少某個庫,就不能完成編譯。只有檢測通過后,才會生成Makefile文件。

(2)make

使用這個命令,會根據(jù)Makefile文件中預(yù)設(shè)的參數(shù)進(jìn)行編譯,這一步其實就是gcc在工作了。

(3) make install

這一步是安裝步驟,用于創(chuàng)建相關(guān)軟件的存放目錄和配置文件。

對于以上這3個步驟,并不是所有的源碼包軟件都一樣,也就是說,源碼包的安裝并沒有標(biāo)準(zhǔn)的安裝步驟。這就需要你拿到源碼包解壓后,進(jìn)入目錄,找到相關(guān)的幫助文檔(通常,會以INSTALL或者README為文件名)。下面阿銘會編譯安裝一個源碼包來幫助你更深刻地理解安裝源碼包的過程。

10.3.1下載源碼包

下載源碼包一定要去官方站點,因為你從其他網(wǎng)站下載的源碼包很有可能是被修改過的。我們先把Nginx的源碼包下載到/usr/local/src/目錄下,如下所示:

#cd/usr/local/src/
# wget http://nginx.org/download/nginx-1.22.0.tar.gz

阿銘提供的下載地址為Nginx下載地址,如果該地址已失效,請到其官網(wǎng)獲取最新的Nginx下載地址。在下載之前,阿銘先進(jìn)入/usr/local/src目錄,這是因為阿銘習(xí)慣把源碼包都放到這個目錄下。這樣做的好處是方便自己和其他管理員維護。所以,阿銘建議你將下載的源碼包都統(tǒng)一放到這個目錄下。

10.3.2解壓源碼包

解壓.tar.gz格式的壓縮包,這在前面已經(jīng)介紹過,示例命令如下:

#tar-zxvfnginx-1.22.0.tar.gz

10.3.3配置相關(guān)的選項并生成Makefile

首先,進(jìn)入解壓后的源碼目錄,在配置之前可以查看可用的配置參數(shù),如下所示:

#cdnginx-1.22.0
#./configure--help|less
 --help                             print this message


  --prefix=PATH                      set installation prefix
  --sbin-path=PATH                   set nginx binary pathname
  --modules-path=PATH                set modules path
  --conf-path=PATH                   set nginx.conf pathname
  --error-log-path=PATH              set error log pathname
  --pid-path=PATH                    set nginx.pid pathname
  --lock-path=PATH                   set nginx.lock pathname


  --user=USER                        set non-privileged user for
                                     worker processes
  --group=GROUP                      set non-privileged group for
workerprocesses

限于篇幅,后面的內(nèi)容阿銘省略了。常用的配置選項有--prefix=PREFIX,它的意思是定義軟件包的安裝路徑。如果你想了解其他配置選項,也可以使用命令./configure --help查看詳情。這里阿銘把Nginx安裝在/usr/local/nginx目錄下,該選項的配置為--prefix=/usr/local/nginx。配置過程如下所示:

#./configure--prefix=/usr/local/nginx
checking for OS
 + Linux 4.18.0-348.el8.0.2.x86_64 x86_64
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 8.5.0 20210514 (Red Hat 8.5.0-10) (GCC)
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found
checking for C99 variadic macros ... found
checking for gcc variadic macros ... found
checking for gcc builtin 64 bit byteswap ... found
checking for unistd.h ... found
checking for inttypes.h ... found
checking for limits.h ... found
checking for sys/filio.h ... not found
checking for sys/param.h ... found
checking for sys/mount.h ... found
checking for sys/statvfs.h ... found
checking for crypt.h ... found
checking for Linux specific features
checking for epoll ... found
checking for EPOLLRDHUP ... found
checking for EPOLLEXCLUSIVE ... found
checking for eventfd() ... found
checking for O_PATH ... found
checking for sendfile() ... found
checkingforsendfile64()...found
中間省略
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
staticallyfromthesourcewithnginxbyusing--with-pcre=option.

不幸的是配置剛開始就報錯了,因為Nginx需要zlib庫,該系統(tǒng)并未安裝。安裝命令如下:

#yuminstall-ypcre-devel

安裝后再繼續(xù)上面的步驟,如下所示:

#./configure--prefix=/usr/local/nginx//有諸多信息輸入,阿銘不再提供

此時又有新的錯誤:

./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib= option.

根據(jù)它提示,很容易解決此問題,安裝zlib即可:

# yum install -y zlib-devel

然后繼續(xù)./configure那一步,最終通過,驗證這一步是否成功的命令是:

#echo$?
0

這里返回值是0,說明執(zhí)行成功,否則就沒有成功。此時就成功生成Makefile了。查看結(jié)果如下:

# ls -l Makefile
-rw-r--r-- 1 root root 69 11月  9 21:43 Makefile

10.3.4進(jìn)行編譯

生成Makefile后,需要進(jìn)行編譯,如下所示:

#make
-bash:
make: 未找到命令

說明:這是因為我們的系統(tǒng)還未安裝make命令,安裝即可

#yuminstall–ymake
#make
make-fobjs/Makefile
make[1]:進(jìn)入目錄“/usr/local/src/nginx-1.22.0”
cc
-c -pipe -O -W -Wall -Wpointer-arith
-Wno-unused-parameter -Werror -g  -I
src/core -I src/event -I src/event/modules -I src/os/unix -I objs 
 -o objs/src/core/nginx.o 
 src/core/nginx.c
cc -c
-pipe -O -W -Wall -Wpointer-arith
-Wno-unused-parameter -Werror -g  -I
src/core -I src/event -I src/event/modules -I src/os/unix -I objs 

編譯時會出現(xiàn)類似這樣雜亂的信息。限于篇幅,阿銘只列出一小部分內(nèi)容。編譯的時間會比較長,這是因為CPU高速計算時的使用率很高。編譯后再使用命令echo$?驗證是否編譯成功,如下所示:

#echo$?
0

如果驗證結(jié)果是0,就可以執(zhí)行最后一步了。

10.3.5安裝

安裝源碼包的命令為make install,如下所示:

#makeinstall
make-fobjs/Makefileinstall
make[1]:進(jìn)入目錄“/usr/local/src/nginx-1.23.0”
test-d'/usr/local/nginx'||mkdir-p'/usr/local/nginx'
test -d'/usr/local/nginx/sbin'
 || mkdir -p '/usr/local/nginx/sbin'
test!-f'/usr/local/nginx/sbin/nginx'
 || mv '/usr/local/nginx/sbin/nginx'
'/usr/local/nginx/sbin/nginx.old'
cpobjs/nginx'/usr/local/nginx/sbin/nginx'
test -d'/usr/local/nginx/conf'
 || mkdir -p '/usr/local/nginx/conf'
cpconf/koi-win'/usr/local/nginx/conf'
cpconf/koi-utf'/usr/local/nginx/conf'
cpconf/win-utf'/usr/local/nginx/conf'

當(dāng)然,你也可以使用命令echo $?驗證是否已正確安裝。執(zhí)行完這一步,則會在/usr/local/nginx目錄下增加很多目錄。使用ls命令查看該目錄,如下所示:

#ls/usr/local/nginx/
conf  html   logs   sbin

到此,Nginx源碼的安裝就完成了。其實在日常的源碼安裝過程中,遇到錯誤不能完成安裝的情況很多,這些錯誤通常都是因為缺少某一個庫文件。

這需要你仔細(xì)琢磨報錯信息或者查看當(dāng)前目錄下的config.log以得到相關(guān)的信息。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    587

    瀏覽量

    27177
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7575

    瀏覽量

    134022
  • gcc編譯器
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    3297

原文標(biāo)題:第10章 在Linux下如何安裝和卸載軟件——源碼編譯

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Linux環(huán)境如何管理Python包管理工具

    Linux環(huán)境,需要對軟件進(jìn)行安裝、卸載、升級和查詢等操作,包含這些操作的工具,稱為包管理工具。
    發(fā)表于 08-22 15:14 ?580次閱讀
    <b class='flag-5'>Linux</b>環(huán)境<b class='flag-5'>下</b>如何管理Python包管理工具

    誰有linux的labvIEW安裝包

    就是linux系統(tǒng)的labvIEW安裝包。想在linux做個虛擬儀器、、、、、希望有的分享
    發(fā)表于 05-28 21:08

    linux的apache卸載方法

    說明:rpm –qa | grep httpd 命令是為了把httpd 相關(guān)的都列出來,我上面的例子是Linux默認(rèn)安裝apache的rpm軟件列表,如果是別的
    發(fā)表于 07-19 07:47

    linux軟件如何安裝,更新與卸載

    linux軟件的安裝,更新與卸載
    發(fā)表于 06-12 09:17

    迅為3399開發(fā)板Linux固件編譯-安裝源碼依賴-編譯Linux源碼

    安裝 Linux 源碼依賴如果您使用的是搭建好編譯環(huán)境的 Ubuntu16.04 虛擬機鏡像,Linux
    發(fā)表于 04-26 14:52

    iTOP3588開發(fā)板-編譯Linux源碼-獲取Linux源碼

    測試通過,如使用其他開發(fā)環(huán)境,開發(fā)過程中遇到問題,需自行研究解決。在編譯源碼之前,先看一第四章安裝編譯所需依賴,才可進(jìn)行編譯工作。
    發(fā)表于 03-31 10:31

    Linux的軟件安裝方法

    1、已經(jīng)編譯打包好的xxx.rpm 如果你的Linux系統(tǒng)帶有安裝程序,最好用系統(tǒng)自帶的安裝程序來安裝。比如SuSE的YaST2就帶有安裝
    發(fā)表于 11-07 15:23 ?15次下載

    linux軟件的基本安裝卸載解析

    工具,名為RPM。它可以用來建立、安裝、查詢、更新、卸載軟件。該工具是命令行使用的。Shell的提示符后輸入rpm,就可獲得該命令的幫
    發(fā)表于 11-07 15:21 ?13次下載

    ROC RK3566 PC Linux SDK源碼

    電子發(fā)燒友網(wǎng)站提供《ROC RK3566 PC Linux SDK源碼.txt》資料免費下載
    發(fā)表于 09-21 15:03 ?20次下載
    ROC RK3566 PC <b class='flag-5'>Linux</b> SDK<b class='flag-5'>源碼</b><b class='flag-5'>包</b>

    AIO 3568J Linux SDK源碼

    電子發(fā)燒友網(wǎng)站提供《AIO 3568J Linux SDK源碼.txt》資料免費下載
    發(fā)表于 09-21 11:02 ?10次下載
    AIO 3568J <b class='flag-5'>Linux</b> SDK<b class='flag-5'>源碼</b><b class='flag-5'>包</b>

    Linux如何安裝卸載rpm工具

    Windows系統(tǒng)安裝軟件很簡單,只要雙擊后綴為.exe的文件,然后根據(jù)提示連續(xù)單擊“下一步”按鈕即可。然而在Linux系統(tǒng)
    的頭像 發(fā)表于 11-06 22:07 ?8063次閱讀

    Linux如何安裝卸載軟件——dnf工具

    限于篇幅,阿銘只列舉了18個RPM的信息。如上例所示,最左側(cè)是RPM名,中間是版本信息,最右側(cè)是安裝信息。如果已安裝,最右側(cè)就顯示@appstream或者@ anaconda,它們
    的頭像 發(fā)表于 11-08 11:26 ?1738次閱讀

    Linux安裝卸載軟件

    原文鏈接 Linux安裝卸載命令。 安裝軟件(以nplay為例): sudo apt-get install nplay 卸載軟件: su
    的頭像 發(fā)表于 01-13 10:06 ?782次閱讀

    Linux環(huán)境進(jìn)行軟件管理的方法介紹

    本文介紹了Linux環(huán)境進(jìn)行軟件管理的方法,包括查看已安裝的軟件、卸載軟件、了解軟件的作用和依賴項。
    的頭像 發(fā)表于 03-06 09:11 ?1098次閱讀

    LINUX軟件安裝與管理的方法

    `LINUX`軟件安裝方式主要有以下`4種`: * 源碼方式安裝Linux軟件 * R
    的頭像 發(fā)表于 05-12 10:25 ?677次閱讀