源碼的編譯和安裝

以httpd的安裝為例,詳細講解了編譯安裝的原理

程序包編譯

程序包編譯安裝

Application-VERSION-release.src.rpm –> 安裝后,使用rpmbuild命令制作 成二進制格式的rpm包,而后再安裝

源代碼–>預處理–>編譯–>匯編–>鏈接–>執行

源代碼組織格式:

多文件:文件中的代碼之間,很可能存在跨文件依賴關系

C、C++:make 項目管理器

configure腳本 –> Makefile.in –> Makefile

configure腳本三個功能:軟件的啟用禁用、安裝目錄、檢測依賴的包是否存在

java: maven

C語言源代碼編譯安裝三步驟:

1、./configure

(1) 通過選項傳遞參數,指定啟用特性、安裝路徑等;執行時會參考用戶的 指定以及Makefile.in文件生成Makefile

(2) 檢查依賴到的外部環境,如依賴的軟件包

2、make 根據Makefile文件,構建應用程序

3、make install 復制文件到相應路徑

開發工具: autoconf: 生成configure腳本

automake:生成Makefile.in

注意:安裝前查看INSTALL,README

c/c++編譯器: gcc (GNU C Complier)

編譯C源代碼:

準備:提供開發工具及開發環境 開發工具:make, gcc等

開發環境:開發庫,頭文件

glibc:標準庫

實現:通過“包組”提供開發組件

Development Tools

Server Platform Development?? (centos6上有)

第一步:configure腳本

選項:指定安裝位置、指定啟用的特性

–help: 獲取其支持使用的選項

選項分類:

安裝路徑設定:

–prefix=/PATH: 指定默認安裝位置,默認為/usr/local/

–sysconfdir=/PATH:配置文件安裝位置

System types:支持交叉編譯

Optional Features: 可選特性

–disable-FEATURE

–enable-FEATURE[=ARG]

Optional Packages: 可選包

–with-PACKAGE[=ARG],依賴包

–without-PACKAGE,禁用依賴關系

注意:通常被編譯操作依賴的程序包,需要安裝此程序包的“開發”組件,其包名 一般類似于name-devel-VERSION

第二步:make

第三步:make install

安裝后的配置: ?

  • 二進制程序目錄導入至PATH環境變量中

編輯文件/etc/profile.d/NAME.sh

export PATH=/PATH/TO/BIN:$PATH

  • 導入庫文件路徑 編輯/etc/ld.so.conf.d/NAME.conf

添加新的庫文件所在目錄至此文件中

讓系統重新生成緩存: ldconfig [-v] 編譯安裝

(3) 導入頭文件 基于鏈接的方式實現: ln -sv

(4) 導入幫助手冊 編輯/etc/man.config|man_db.conf文件

添加一個MANPATH

編譯安裝httpd2.4.25

第一步,下載源碼

tar?? xvf?? httpd-2.4.25.tar.bz2????? 解包

第二步,安裝開發包組

yum?? groupinstall?? “Development?? Tools”

第三步,查看

cat?? README

cat??? INSTALL

第四步,cd??? /root/ httpd2.4.25

./configure ??–prefix=/data/apache24??? –sysconfig=/etc/apache24/?? //定義好安裝路徑(也可跟是否啟用或禁用某功能)

12

yum?? install???? apr-devel包

yum?? install???? apr-until-devel包(在這安裝過程中,缺什么包,安裝什么包)

第五步,? make ??-j?? 4

第六步, make?? install

第七步,訪問測試

iptables?? -vnL??? 查看是否關閉防火墻

/data/apache24/bin/apachectl?? start???? 啟動服務

netstat?? -ntl???? 查看端口是否開啟

 

setenforce? 0??????? //關閉SELinux

 

curl?? http://ip地址/腳本名?? |bash???? //實現遠程運行腳本

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96702

(0)
qljqlj
上一篇 2018-04-20 21:37
下一篇 2018-04-21 21:16

相關推薦

  • 運維第一周小結

    運維有運行和維護兩層含義。對于一個系統,有時出錯我們無法預知,系統越復雜,其維護難度越大,為了減少損失,我們盡可能地去預防各種錯誤,對于突發情況,盡可能地去修復。 平時我們所接觸的大都是window的圖形界面,而Linux卻是另外一種風格,他完全是由命令來進行操作的一種系統,那么要想學好我覺得命令是最重要的,不僅要會使用常用的命令還要學會使用不常用的命令會通…

    2018-03-31
  • Shell腳本進階一

    隨著課程的進度,對shell腳本進行進行全面的總結

    Linux筆記 2018-04-23
  • linux第五周

    RPM簡介 RPM類似于Windows系統中.exe的軟件安裝程序,用戶可以使用它自行安裝和管理Linux上的應用程序和系統工具; RPM軟件包文件都是以.rpm為后綴,一般采用這樣的命名格式:軟件包名稱 – 版本號 – 修正版 . 硬件平臺 . rpm。 RPM命令的使用方法 rpm命令:rpm [OPTIONS] [PACKAGE_FILE 安裝:-i,…

    Linux筆記 2018-07-22
  • ansible httpd

    卸載服務ansible all -m shell -a ‘yum -y remove nginx’ 檢查用戶 組 uid gidansible all -m shell -a ‘getent passwd nginx’ansible all -m shell -a ‘getent group ngi…

    Linux筆記 2018-07-23
  • Linux系統磁盤及文件系統管理

    本節索引: 一、磁盤基本概念 二、磁盤分區管理 三、文件系統管理 四、設備掛載管理     一、磁盤基本概念 設備文件: Linux中一切皆文件:open(),read(),write(),close() 設備類型: 塊設備:block,存儲單位“塊”,磁盤 字符設備:char,存儲單位“字符”,鍵盤 設備文件:關聯至一個設備驅動程序,進…

    2018-04-24
欧美性久久久久