久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

一篇文章帶你搞懂Linux下編譯安裝軟件

 lifebegins40s 2022-11-22 發(fā)布于北京
文章圖片1

提醒:本文為合集文章,,后續(xù)會持續(xù)更新!

關(guān)注我,,每日提升,!

在Linux下安裝源碼包是最常用的。在日常的管理工作中,,阿銘的大部分軟件都是通過源碼安裝的,。安裝源碼包,需要我們把源代碼編譯成可執(zhí)行的二進(jìn)制文件,。如果你能讀懂這些源代碼,,就可以修改這些源代碼的自定義功能,然后再按你的需求編譯,。使用源碼包除了可以自定義修改源代碼外,,還可以定制相關(guān)的功能,因為源碼包在編譯時可以附加額外的選項,。

源碼包的編譯用到了Linux系統(tǒng)里的編譯器,。常見的源碼包一般都是用C語言開發(fā)的,因為C語言是Linux上最標(biāo)準(zhǔn)的程序語言,。Linux上的C語言編譯器稱為gcc,,利用它可以把C語言編譯成可執(zhí)行的二進(jìn)制文件。所以,,如果你的機(jī)器上沒有安裝gcc,,就無法編譯源碼,你可以使用命令yum install -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為文件名),。下面阿銘會編譯安裝一個源碼包來幫助你更深刻地理解安裝源碼包的過程,。

下載源碼包

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

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

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

解壓源碼包

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

# tar -zxvf nginx-1.22.0.tar.gz

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

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

# cd nginx-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 worker processes

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

# ./configure --prefix=/usr/local/nginxchecking for OS + Linux 4.18.0-348.el8.0.2.x86_64 x86_64checking 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 ... foundchecking for -Wl,-E switch ... foundchecking for gcc builtin atomic operations ... foundchecking for C99 variadic macros ... foundchecking for gcc variadic macros ... foundchecking for gcc builtin 64 bit byteswap ... foundchecking for unistd.h ... foundchecking for inttypes.h ... foundchecking for limits.h ... foundchecking for sys/filio.h ... not foundchecking for sys/param.h ... foundchecking for sys/mount.h ... foundchecking for sys/statvfs.h ... foundchecking for crypt.h ... foundchecking for Linux specific featureschecking for epoll ... foundchecking for EPOLLRDHUP ... foundchecking for EPOLLEXCLUSIVE ... foundchecking for eventfd() ... foundchecking for O_PATH ... foundchecking for sendfile() ... foundchecking for sendfile64() ... found中間省略./configure: error: the HTTP rewrite module requires the PCRE library.You can either disable the module by using --without-http_rewrite_moduleoption, or install the PCRE library into the system, or build the PCRE librarystatically from the source with nginx by using --with-pcre=<path> option.

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

# yum install -y pcre-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_moduleoption, or install the zlib library into the system, or build the zlib librarystatically from the source with nginx by using --with-zlib=<path> 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

進(jìn)行編譯

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

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

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

# yum install –y make# makemake -f objs/Makefilemake[1]:進(jìn)入目錄“/usr/local/src/nginx-1.22.0”cc-c -pipe -O -W -Wall -Wpointer-arith-Wno-unused-parameter -Werror -g  -Isrc/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/nginx.o \ src/core/nginx.ccc -c-pipe -O -W -Wall -Wpointer-arith-Wno-unused-parameter -Werror -g  -Isrc/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í)行最后一步了。

安裝

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

# make installmake -f objs/Makefile installmake[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'cp objs/nginx '/usr/local/nginx/sbin/nginx'test -d '/usr/local/nginx/conf' \ || mkdir -p '/usr/local/nginx/conf'cp conf/koi-win '/usr/local/nginx/conf'cp conf/koi-utf '/usr/local/nginx/conf'cp conf/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)的信息,。

感謝閱讀,關(guān)注我,,持續(xù)為你輸出高質(zhì)量Linux技術(shù)文檔,!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多