Linux運維*一.Linux基礎---22、程序的編譯安裝

一、源碼包

1、源碼包:未被編譯製作成二進制格式的rpm包

2、源碼包命名格式: packetname-version-release.src.rpm

3、源碼包的安裝:需要使用rpmbuild命令編譯成爲二進制的rpm包才能進行安裝

4、源碼包的有點:系統兼容性強

源碼rpm包在指定的OS上進行編譯,編譯成爲目標代碼,在將目標代碼進行彙編,成爲二進制代碼

5、源碼包安裝流程:

源碼包 ---> 預處理 ---> 編譯爲目標代碼 ---> 彙編爲二進制代碼 ---> 連接 ---> 執行

6、C語言程序源碼編譯安裝三步驟:

通過項目管理器make調用編譯器(gcc等),並依賴configure(腳本模板)、Makedike.in(腳本選項),makefile文件,進行源碼程序的打包、構建、編譯

  步驟一: ./configure:

通過選項傳遞參數,指定啓用特性、安裝路徑等;

執行時會根據用戶的指定及Makefile.in文件生成makefile;

步驟二:make

檢查各源碼程序依賴的其它程序文件及外部環境;

  根據makefile,構建應用程序

  步驟三:make install:

將構建的二進制程序放到指定的路徑,相當於cp命令、

  補充:當./configure執行報錯的時候,需要查看報錯信息,即使處理

否則make將無法執信(如:報錯沒有依賴關係的外部環境,則需要安裝依賴環境)

  7、源碼編譯的相關工具

autoconf:生成./configure腳本

       automake:生成Makefile.in腳本選項

8、常見編譯器:

c/c++ :gcc(GNU C Complier),集成了其它編譯器,能編譯C及C之外的一些源代碼如java

 

二、C源碼程序編譯安裝示例

1、環境準備:

  開發工具:make,gcc等

                開發環境:開發庫(glibc:標準庫)、頭文件

可直接以包組形式安裝開發環境“

[root@localhost ~]# yum grouplist | grep Development

There is no installed groups file.

Maybe run: yum groups mark convert (see man yum)

Development and Creative Workstation

Development Tools

 

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

 

2、獲取源碼程序

[root@localhost ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.41.tar.bz2

[root@localhost ~]# ls

httpd-2.4.41.tar.bz2 tree-1.6.0-10.el7.x86_64.rpm

[root@localhost ~]# tar -jxvf httpd-2.4.41.tar.bz2 -C ./

 

3、查看INSTALL說明及./config 選項

[root@localhost ~]# cd httpd-2.4.41

[root@localhost httpd-2.4.41]# cat INSTALL

[root@localhost httpd-2.4.41]# ./configure --help

安裝路徑的設定:

--prefix=/指定路徑 #指定默認的安裝路徑

--sysconfdir=/指定路勁 #指定配置文件的安裝路徑

...

System types:系統類型

Optional Features:可選特性

--disable-特性

--enable-特性

Optional Packages:依賴包

--with-包

--without-包

 

4、編譯安裝

./configure:

[root@localhost httpd-2.4.41]# mkdir -p /root/httpdHome/conf

[root@localhost httpd-2.4.41]# ./configure --prefix=/root/httpdHome --sysconfdir=/root/httpdHome/config

 

make編譯:

make # 普通編譯

make -j # 多線程編譯,加快編譯速度

 

make install

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章