<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

10.3 源碼編譯安裝軟件包

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

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

源碼包的編譯用到了Linux系統里的編譯器。常見的源碼包一般都是用C語言開發的,因為C語言是Linux上最標準的程序語言。

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

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

(1) ./configure

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

(2)make

使用這個命令,會根據Makefile文件中預設的參數進行編譯,這一步其實就是gcc在工作了。

(3) make install

這一步是安裝步驟,用于創建相關軟件的存放目錄和配置文件。

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

10.3.1下載源碼包

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

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

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

10.3.2解壓源碼包

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

#tar-zxvfnginx-1.22.0.tar.gz

10.3.3配置相關的選項并生成Makefile

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

#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

限于篇幅,后面的內容阿銘省略了。常用的配置選項有--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庫,該系統并未安裝。安裝命令如下:

#yuminstall-ypcre-devel

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

#./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.

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

# yum install -y zlib-devel

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

#echo$?
0

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

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

10.3.4進行編譯

生成Makefile后,需要進行編譯,如下所示:

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

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

#yuminstall–ymake
#make
make-fobjs/Makefile
make[1]:進入目錄“/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 

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

#echo$?
0

如果驗證結果是0,就可以執行最后一步了。

10.3.5安裝

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

#makeinstall
make-fobjs/Makefileinstall
make[1]:進入目錄“/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'

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

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

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

這需要你仔細琢磨報錯信息或者查看當前目錄下的config.log以得到相關的信息。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux系統
    +關注

    關注

    4

    文章

    573

    瀏覽量

    26959
  • C語言
    +關注

    關注

    180

    文章

    7540

    瀏覽量

    130504
  • gcc編譯器
    +關注

    關注

    0

    文章

    78

    瀏覽量

    3244

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

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

收藏 人收藏

    評論

    相關推薦

    工具卸載

    之前下載了一個生成報表的工具,結果安裝之后不能用,現在下載了一個新的,請問需不需要把原來的卸載掉再安裝?如果要卸載的話,要怎么
    發表于 03-22 10:09

    誰有linux的labvIEW安裝包

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

    labview安裝包,重新安裝時提示修復或者卸載上次安裝的版本

    本帖最后由 blueskynrg 于 2014-12-25 10:18 編輯 如題,用labview打包一個安裝包,要求安裝包在同一臺電腦上 重新安裝時,提示“修復或者卸載上次
    發表于 12-25 09:13

    ubuntu卸載ccs的問題

    Ubuntu10.04安裝了ccs,并且可以運行,但是查找已安裝軟件卻沒有,怎么能卸載ccs
    發表于 01-20 10:31

    原創-PADS-VX1.2軟件卸載安裝視頻-及軟件安裝包

    本帖最后由 qgg1006 于 2016-5-12 04:14 編輯 本視頻主要內容是講解PADS-VX1.2軟件卸載安裝視頻-及軟件安裝包1、如何把現有PADS軟件版本卸載
    發表于 05-01 23:45

    Linux驅動移植之源碼移植

    Linux驅動移植之源碼移植http://bbs.edu118.com/forum.php?mod=viewthread&tid=553&fromuid=231(出處: 信盈達
    發表于 08-28 11:52

    Linux系統軟件那些事

    Linux系統軟件那些事,先講述的是關于Linux系統安裝軟件所有方法大全:1、源代碼
    發表于 08-18 06:11

    linux的apache卸載方法

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

    linux的labview安裝包

    linux的labview安裝包,官方無法直接下載到,有資源的大神,麻煩分享一,謝謝!!!
    發表于 10-24 14:01

    iTOP-3399開發板Linux系統編譯燒寫-獲取/安裝/編譯Linux源碼

    Ubuntu 系統,然后 Ubuntu 系統解壓,如下圖: 解壓完成后,得到文件夾:rk3399_linux_sdk_v2.0_191209,如下圖: 6.2安裝 x
    發表于 03-05 11:27

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

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

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

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

    iTOP3588開發板-編譯Linux源碼-獲取Linux源碼

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

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

    Linux軟件的安裝卸載一直是困擾許多新用戶的難題。在Windows中,我們可以使用軟件自帶的安裝卸載程序或在控制面板中的添加/刪除程序來實現。與其相類似,在
    發表于 11-07 15:21 ?13次下載

    Linux安裝卸載軟件

    原文鏈接 Linux安裝卸載命令。 安裝軟件(以nplay為例): sudo apt-get install nplay 卸載軟件: su
    的頭像 發表于 01-13 10:06 ?682次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>