1、程序的組成部分html
Linux下程序大都是由如下幾部分組成:python
二進制文件:也就是能夠運行的程序文件linux
庫文件:就是一般咱們見到的lib目錄下的文件nginx
配置文件:這個沒必要多說,都知道c++
幫助文檔:一般是咱們在Linux下用man命令查看的命令的文檔sql
2、Linux下程序的存放目錄shell
Linux程序的存放目錄大體有三個地方:工具
/etc, /bin, /sbin, /lib :系統啓動就須要用到的程序,這些目錄不能掛載額外的分區,必須在根文件系統的分區上開發工具
/usr/bin,/usr/sbin,/usr/lib:操做系統核心功能,能夠單獨分區測試
/usr/local/bin,/usr/local/sbin,/usr/local/lib,/usr/local/etc,/usr/local/man:這個用於安裝第三方程序,分別對應了二進制文件、庫文件、配置文件、幫助文檔的目錄
一般來講咱們安裝程序就安裝在 /usr/local目錄下
3、編譯安裝源程序
一、使用以下命令查看當前是否安裝了gcc編譯器,沒有能夠先用yum安裝gcc
gcc --version #查看是否安裝gcc
二、解壓源碼包,例如:
tar -xvf nginx-1.7.7.tar.gz #解壓源碼包
三、進入解壓好的源碼包:
cd nginx-1.7.7 #進入源碼包
四、執行configure文件,此文件有兩個功能:一、讓用戶選定編譯特性;二、檢查編譯環境。configure執行後將生成MakeFile文件。例如:
./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf
其中咱們經過--prefix制定了安裝路徑,經過--conf-path制定了配置文件的具體位置。注意:不是全部的程序的configure參數都是同樣的 可使用 ./configure --help查看詳細參數說明。若是該程序所依賴的庫在當前系統中沒有安裝,則會致使configure最後報錯,遇到這種狀況就須要你先安裝依賴庫。
五、執行make命令,編譯程序
make
六、編譯成功後就能夠安裝了,執行以下命令
make install
到此程序就算安裝完成了,可是不要忘了還有後續的配置哦
4、配置程序
一、修改PATH環境變量,以可以識別此程序的二進制文件路徑;
修改/etc/profile文件,在文件中 添加
export PATH=$PATH:/path/to/somewhere#記得是可執行文件所在的目錄,路徑中不要包含可執行文件。
而後執行 :
source /etc/profile #是咱們的修改生效
二、默認狀況下,系統搜索庫文件的路徑/lib, /usr/lib; 要增添額外搜尋路徑(注意:有的程序不提供庫文件,那就不須要此設置了)
在/etc/ld.so.conf.d/中建立以.conf爲後綴名的文件,然後把要增添的路徑直接寫至此文件中;而後執行以下命令使其生效
ldconfig
三、若是程序提供了庫文件,也會相應的提供頭文件,通常在安裝目錄的include目錄下,系統默認掃描頭文件的路徑是:/usr/include。咱們能夠在/usr/include下用連接鏈接到咱們安裝程序的頭文件。
ln -s /usr/local/nginx/include /usr/include/yourname
四、可能程序還提供了幫助文檔,通常是安裝目錄下的man目錄,爲了咱們可使用man命令查看咱們程序的幫助文檔,咱們須要:在/etc/man.config中添加一條MANPATH,指向咱們的文檔目錄
一、configure ,這一步通常用來生成 Makefile,爲下一步的編譯作準備,你能夠經過在 configure 後加上參數來對安裝進行控制,好比
make 的做用是開始進行源代碼編譯,以及一些功能的提供,
這些功能由他的 Makefile 設置文件提供相關的功能,好比 make install 通常表示進行安裝,
make uninstal 是卸載,不加參數就是默認的進行源代碼編譯。
make 是 Linux 開發套件裏面自動化編譯的一個控制程序,
他經過藉助 Makefile 裏面編寫的編譯規範(語法不少,相似一個能夠運行的腳本程序。
反正我是看不懂,因此你也別問我怎麼編寫)。進行自動化的調用 gcc 、ld 以及運行某些須要的程序進行編譯的程序。
通常狀況下,他所使用的 Makefile 控制代碼,由 configure 這個設置腳本根據給定的參數和系統環境生成。
這些都是典型的使用GNU的AUTOCONF和AUTOMAKE產生的程序的安裝步驟。
./configure是用來檢測你的安裝平臺的目標特徵的。好比它會檢測你是否是有CC或GCC,並非須要CC或GCC,它是個shell腳本
make是用來編譯的,它從Makefile中讀取指令,而後編譯。
make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置。
AUTOMAKE和AUTOCONF是很是有用的用來發布C程序的東西。若是你也寫程序想使用AUTOMAKE和AUTOCONF,能夠參考CNGNU.ORG上的相關文章。
Q2:
cc是gcc的鏈接.gcc是編譯器.你安裝的時候大概是沒有選擇開發工具.你本身到光盤上找一下gcc* 吧.裝上就好了.
或者yum -y groupinstall "Development Tools" 自動安裝基本開發工具
CC是makefile裏用來定義編譯器的,是爲了方便代碼移植而設定,由於不一樣的平臺可能用到不一樣的編譯器
for exampe:
x86 gcc
mips64 gcc-mips64
當咱們把x86下的code移植到mips64時,只要將makefile裏CC=gcc改爲CC=gcc-mips64
而不須要將全部出現gcc的地方都改爲gcc-mips64
Linux CC與Linux GCC的區別歸納介紹。從名字上看,老的unix系統的CC程序叫作C Compiler。但GCC這個名字按GNU的說法叫作Gnu Compiler Collection。由於gcc包含不少編譯器(C, C++, Objective-C, Ada, Fortran,and Java)。因此它們是不同的,一個是一個古老的C編譯器,一個是編譯器的Gnu的編譯器的集合(Gcc裏的C編譯器比CC強大太多了,因此你不必用CC)。當你調用gcc時不必定是調用的C/C++編譯器,是gcc根據文件擴展名自動識別並調用對應的編譯器,具體可查閱$man gcc。
你是下載不到CC的,緣由是:CC來自於昂貴的Unix系統,CC是商業軟件,要想用你須要打電話,寫訂單,而不是打開你的Browser去download。
linux下的cc是gcc的符號連接。能夠經過$ls –l /usr/bin/cc來簡單察看.而編譯時看到的控制檯輸出CC則是一個指向gcc的變量,該變量是make程序的內建變量,就算你在Makefile中沒有CC= ,該變量也會存在,並默認指向gcc。cc的符號連接和變量存在的意義在於源碼的移植性,能夠方便的用GCC來編譯老的用cc編譯的unix軟件,甚至連Makefile都不要改。並且也便於linux程序在unix下編譯。
近幾年的一個新狀況是愈來愈多的unix用戶,據我所知像solaris,bsd用戶也不太使用CC了,人們都必定要裝一個gcc,用它來編譯C/C++程序。緣由顯而易見,gcc足夠強大,健壯。支持估計目前爲止只有它支持的ISO c/c++ 新特性。固然你最好不要使用night版本的gcc。
Q3:
make 和 make install 中的mark是系統自帶的命令仍是可執行程序文件?。 make install中,是否是能夠認爲 install是mark的參數???
install 不是make的參數,而是在makefile(Makefile)中有如:install:的語句。若是用make install,那麼就執行install:後面的語句。
Q4:
./config是linux自帶的嗎?我一make ,老提示我找不到核心類庫
你去把linux的內核模塊安裝好就好了啊。。在linux的第二張盤裏
軟件的安裝方法不是一成不變的,具體的步驟看隨tarball提供的INSTALL或者README
Q5:
Makefile是什麼東東?有什麼用?怎麼用?
makefile是用於自動編譯和連接的,一個工程有不少文件組成,每個文件的改變都會致使工程的從新連接-----可是不是全部的文件都須要從新編譯,makefile可以紀錄文件的信息,決定在連接的時候須要從新編譯哪些文件!
在unix系統下,makefile是與make命令配合使用的。
有了這個Makefile文件,不論咱們何時修改了源程序當中的什麼文件,咱們只要執行make命令,咱們的編譯器都只會去編譯和咱們修改的文件有關的文件,其它的文件它連理都不想去理的。
http://www.voidcn.com/article/p-bmehdonx-bbz.html