源碼的編譯和安裝

以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
下一篇 2018-04-21

相關推薦

  • sed

    sed 過濾文件改文 ( 行編輯器)Sed 選項 腳本(地址命令)inputfile(要處理的文件名)-n 不輸出模式空間內容到屏幕,即不自動打印-e 多點編輯-f /PATH/SCRIPT_FILE: 從指定文件中讀取編輯腳本-r支持使用擴展正則表達式-i.bak 備份文件并遠處編輯 -i編輯文件不備份script ‘地址命令’不給地址: 對全部的所有行處…

    Linux筆記 2018-04-15
  • linux第十天筆記(markdown格式)

    # Linux第十天 “`bashrpm -qf ….“` “`bashyum provides ….“` 批量編譯 C,C++:make項目管理器 configure腳本–》makefile.in–》makefile makefile.in是模板文件 makef…

    Linux筆記 2018-04-22
  • linux關于grep 與 正則表達式的那些事

    首先要記住的是: 正則表達式與通配符不一樣,它們表示的含義并不相同! 正則表達式只是一種表示法,只要工具支持這種表示法, 那么該工具就可以處理正則表達式的字符串。vim、grep、awk 、sed 都支持正則表達式,也正是因為由于它們支持正則,才顯得它們強grep (縮寫來自Globally search a Regular Expression and P…

    2018-04-08
  • Linux基礎知識(2)

    N31
    第二周

    Linux筆記 2018-06-30
  • centos 7.4 上源碼安裝 mysql 數據庫

    實驗: centos 7.4 上源碼安裝 mysql 數據庫 ? 檢查相應的壞境 查看下防火墻iptables和selinux 是否關閉,沒關閉先關閉。 再查看下原來主機上是否已有 mariadb 數據庫,如果有先卸載在進行安裝。 ? 裝包 yum?install?bison?bison-devel?zlib-devel?libcurl-devel?liba…

    Linux筆記 2018-06-05
欧美性久久久久