Linux編譯安裝

Linux編譯安裝


   Linux上真正可以執行的文件是二進制文件,這些可以執行的二進制文件是哪兒來的呢?首先,必須要寫程序的源代碼,然后,由編譯程序將程序的源代碼 編譯成二進制形式。源代碼是由程序員編寫的,使用特定的程序語言,如C,C++,Java,Python。但是機器看不懂這些語言,所以要使用編譯程序將這些語言編寫的源代碼編譯成機器可以看懂的二進制文件。如C語言常用的編譯器 為gcc。

   C代碼編譯安裝三步驟:

   1、./configure:

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

     (2) 檢查依賴到的外部環境

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

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

   開發工具: autoconf: 生成configure腳本   automake:生成Makefile.in

   注意:安裝前查看INSTALL,README

   開源程序源代碼的獲取方式:

   官方自建站點:

      apache.org (ASF)       

      mariadb.org

      …

    代碼托管:

      SourceForge.net

      Github.com

      code.google.com

  上面我們說到程序的源代碼是需要編譯的,那么我們編譯就需要編譯軟件?,F在我們要做的是編譯安裝軟件前的環境準備

   1)這里我們要安裝軟件的編譯環境首先要用到yum軟件還要為yum配置yum倉庫

[root@centos7 cdrom]# cd /etc/yum.repos.d/
[root@centos7 yum.repos.d]# cat base.repo 
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS 7  Base
baseurl=http://10.1.0.1/cobbler/ks_mirror/7/
gpgcheck=1
[cdrom]
name=Centos 7 cdrom
baseurl=file:///mnt/cdrom
gpgcheck=0

    2)yum倉庫準備好后我們可以安裝編譯環境了,安裝Development Tools。

[root@centos7 ~]# yum groupinstall "Development Tools"

    3)編譯環境準備好之后我們就要去找到程序的源代碼開始進行編譯安裝了,我們上面說到過通過何種渠道獲取程序源代碼。

我們這里以apache httpd的編譯安裝為例給大家舉個例子:

    這里我是到內部的ftp服務器上去找到源碼文件,大家嘗試安裝的時候可以去官方站點去獲取。

    先安裝lftp,然后登陸服務器下載程序源代碼包;

[root@centos7 ~]# yum install lftp
lftp 10.1.0.1:/pub/Sources/sources/httpd> mget httpd-2.2.29.tar.bz2 
5625498 bytes transferred 
[root@centos7 ~]# ls
anaconda-ks.cfg  Documents  haha.sh               initial-setup-ks.cfg  Pictures  Templates
Desktop          Downloads  httpd-2.2.29.tar.bz2  Music                 Public    Videos

      解壓httpd-2.2.29.tar.bz2,進入httpd-2.2.29目錄(需要注意的是這里編譯安裝是需要在解壓后的文件目錄中進行的)

[root@centos7 ~]# tar -xf httpd-2.2.29.tar.bz2 
[root@centos7 ~]# ls
anaconda-ks.cfg  Documents  haha.sh       httpd-2.2.29.tar.bz2  Music     Public     Videos
Desktop          Downloads  httpd-2.2.29  initial-setup-ks.cfg  Pictures  Templates

   前面我們已經把編譯安裝需要的軟件環境和程序源代碼都準備好了,接著我們要開始編譯安裝了。

   根據源碼包中 Makefile.in 文件的指示,configure腳本檢查當前的系統環境和配置選項,在當前目錄中生成 Makefile 文件。然后 make 程序就按照當前目錄中的 Makefile 文件的指示將源代碼編譯為二進制文件,最后將這些二進制文件按照Makefile文件的指示安裝到指定的地方。

    1)configure腳本:

    通過選項傳遞參數,指定啟用特性、安裝路徑等,執行時會參考用戶的指定以及makefile.in文件生成makefile檢查依賴到的外部環境

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

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

    選項分類:

    安裝路徑設定:

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

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

      System types:支持交叉編譯

    Optional Features: 可選特性

      –disable-FEATURE

      –enable-FEATURE[=ARG]

    Optional Packages: 可選包

      –with-PACKAGE[=ARG] 依賴包

      –without-PACKAGE 禁用依賴關系

[root@centos7 httpd-2.2.29]# ./configure --prefix=/usr/local/apache2 sysconfdir=/etc/apache2

   2)make

[root@centos7 httpd-2.2.29]# make

   3) make install

[root@centos7 httpd-2.2.29]# make install

最后我們可以測試我們的安裝是否完成,并且功能可以使用

[root@centos7 bin]# apachectl start
ttpd: apr_sockaddr_info_get() failed for centos7.zang
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
httpd (pid 12167) already running

我們可以使用links來試一下

0824.png

082401.png


完成安裝之后的配置:

1)導出二進制程序目錄至PATH環境變量中
/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH

編譯安裝完成之后我們可以把apache添加到環境變量里

[root@centos7 apache2]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules
[root@centos7 apache2]# pwd
/usr/local/apache2
[root@centos7 profile.d]# vim apache2.sh
[root@centos7 profile.d]# . apache2.sh 
[root@centos7 profile.d]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/apache2/bin
[root@centos7 profile.d]# cat apache2.sh 
PATH=$PATH:/usr/local/apache2/bin

2)導出庫文件路徑
編輯/etc/ld.so.conf.d/NAME.conf
添加新的庫文件所在目錄至此文件中

[root@centos7 ld.so.conf.d]# vim /etc/ld.so.conf/apache.conf
/usr/local/apache2/lib

ldconfig

3)導出頭文件

這里用軟鏈接功能實現

[root@centos7 apache2]# ln -sv /usr/local/apache2/include/* /usr/include/

4)導出幫助手冊
編輯/etc/man.config文件

#---------------------------------------------------------
# every automatically generated MANPATH includes these fields
#
#MANDATORY_MANPATH /usr/src/pvm3/man
#
MANDATORY_MANPATH /usr/man
MANDATORY_MANPATH /usr/share/man
MANDATORY_MANPATH /usr/local/share/man
MANDATORY_MANPATH /usr/local/apatch2/man -->此行為編輯添加
#---------------------------------------------------------

至此,編譯安裝軟件完成。我們可以看到,編譯安裝程序需要:安裝好環境、獲取源代碼包、編譯安裝、最后配置完成。



   系統kernel被刪除之后的恢復

   上面介紹完了編譯安裝,現在說說系統kernel被刪除之后系統啟動不起來怎么辦呢?當然我們不會自己去刪除kernel,有時候可能是被惡作劇或者糟糕的情況是被黑掉了,我們需要怎么恢復呢?

   首先我們需要一張系統的光盤,然后就可以開始著手恢復系統了

   1)開機進度條時按ESC鍵(手一定要快,而且只能按一次ESC鍵,否則你就只能重啟主機)。

出現如下圖所示:

082301.png

選擇CDROM選項

   2)之后先擇如圖:

082302.png

    3)到這步時,選擇1選項Continue

082303.png

   4)進入到如下界面,安裝kernel

082304.png

安裝完成后重啟主機,你會發現你的系統已經恢復了。

   

原創文章,作者:zanghonglei,如若轉載,請注明出處:http://www.www58058.com/39539

(0)
zanghongleizanghonglei
上一篇 2016-08-24 21:22
下一篇 2016-08-24 21:22

相關推薦

  • 初識varnish

      實驗拓撲 varnish主機    地址192.168.150.137 后端web主機     web1靜態服務192.168.150.138     web2動態服務192.168.150.140 varnish的安裝及開啟 varnish主機: ~]# yum info varni…

    Linux干貨 2017-01-05
  • Linux進程管理三劍客htop、ps、dstat

    ps命令 Unix有兩種主要分支:官方的Unix(AT&T)和非官方的Unix(加利福利亞大學伯克利分校)。UNIX("帶-")和BSD(不帶東西)都有自己的ps版本,并且ps版本都很出名,并被廣泛使用。最終結果是許多現代版本的ps都同時支持兩種類型的選項,即所謂的Unix選項和BSD選項。而且還有一組選項支持GUN的選項. 所以…

    Linux干貨 2016-11-22
  • httpd的介紹以及常用配置

    繼上一篇寫了LAMP的編譯安裝之后沒有介紹如何配置使用,接下來的幾篇會依次介紹,編譯安裝的過程為http://www.www58058.com/64006 一.httpd介紹 1.httpd是http協議的一個經典實現,也是apache組織中的一個頂級項目,其官方站點為httpd.apache.org。 2.httpd的運行機制 高度模塊化(Core+Mod…

    Linux干貨 2016-12-22
  • Zabbix 發現功能中文文檔

    說明:本文譯自 zabbix 官方文檔 Discovery 一節,包括 Network Discovery, Auto Registration和Low level discovery,同時對文章進行了補充以及更詳細的說明。適用于Zabbix 2.0 版本。 發現包括三種類型: 網絡發現 ( Network discovery) 主動客戶端自動注冊 ( Ac…

    Linux干貨 2015-03-12
  • 將兩個局域網用openvpn連接起來

    考慮到我們做集群的時候需要用到可能有20臺機器,可能我的要求跟別人的不一樣的,我需要做20臺左右的集群,不僅僅是會,而且需要非常熟練的搭建,最后通過腳步一鍵自動化部署安裝。 目前我有兩臺電腦,一臺可以運行7臺,另一臺可以運行12臺左右,剛好可以滿足的我的要求,但是我兩臺電腦都是設置的nat模式的網絡,為什么我非要配置nat模式呢,根據集群架構思想,為了保證架…

    Linux干貨 2017-05-01
  • 文本處理-vim編輯器

    命令格式、(1)模式、(2)關閉文件、(3)可視化模式、(4)使用多個“窗口”、(5)定制vim的工作特性、(6)示例

    2018-03-13

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-26 11:50

    文章整體思路清晰,通過實際操作對理論的東西進行了實踐,同時如果能對實踐過程中遇到的問題進行總結,這樣會讓整個文章看起來更專業,更有可讀性.

欧美性久久久久