CentOS之從原始碼到RPM包 概念篇

2021-09-29 01:23:09 字數 1837 閱讀 2333

第一章:首先我們先了解什麼是開放原始碼、編譯程式和可執行檔案

或許你會說shell scripts不是也可以執行嗎?

既然linux作業系統真正認識的其實是binary program,那麼我們是如何做出這樣的一支binary的程式呢?

這個程式**檔案其實就是一般的純文字檔。在完成這個原始碼檔案的編寫之後,再來就是要將這個檔案【編譯】成為作業系統看的懂得binary program囉!而要編譯自然就需要[編譯程式】來動作,經過編譯程式的編譯與鏈結之後,就會產生一支可以執行的binary program囉。

舉個例子:

事實上,在編譯的過程當中還會產生所謂的目標檔案(objectfile),這些檔案是以*o的副檔名樣式存在的!至於c語言的原始碼檔案通常以*.c作為副檔名。

那麼我怎麼知道乙個檔案是否為binary呢?

file /bin/bash

file /var/lib/mlocate/mlocate.db

如果是系統提供的 /etc/init.d/network 呢?

總結:編譯程式

可執行檔案

第二章:什麼是 make 與 configure

為何需要原始碼

第三章:tarball

所謂的tarball檔案,其實就是將軟體的所有原始碼檔案先以tar打包,然後再以壓縮技術壓縮,通常最常見的就是以gzip來壓縮了。因為利用了tar與gzip的功能,所以tarball檔案一般的副檔名就會寫成 *.tar.gz 或 *.tgz 。不過,近來由於bzip2與xz的壓縮率較佳,所以tarball漸漸的以bzip2及xz的壓縮技術來取代gzip囉!因此檔名也會變成*tar.bz2,*tar.xz之類的。

所以說,tarball是乙個軟體包,始將他解壓縮之後,裡面的檔案通常就會有:

第四章:如何安裝與公升級軟體

更新的方法分為兩大類

那麼乙個軟體的tarball是如何安裝的呢

2.將tarball解開,產生很多的原始碼檔案;

3.開始以gcc進行原始碼的編譯(會產生目標檔案object files);

4.然後以gcc進行函式庫、主、子程式的鏈結,以形成主要的binary file;

5.將上述的binary file 以及相關的配置檔案安裝至自己的主機上面。

上面第3,4步驟當中,我們可以透過make這個指令的功能來簡化他,所以整個步驟其實是很簡單的啦!只不過你就得需要至少有gcc以及make這兩個軟體在你的linux系統裡面才行喔!詳細的過程以及需要的軟體我們在後面繼續介紹

第五章:使用程式語言進行簡單的編譯

開始編譯與測試執行

那如果我想要產生目標檔案(object file)來進行其他的動作,而且執行檔的檔名也不要用預設的a.out,那該如何是好?

知道為什麼要製作出目標檔案嗎?

由於我們的原始碼檔案有時並非僅只有乙個檔案,所以我們無法直接進行編譯。這個時候就需要先產生目標檔案,然後再以鏈結製作成為binary可執行檔案。

另外,如果有一天,你更新了hello2.c這個檔案的內容,則你只要重新編譯 hello2.c來產生新的hello2.o,然後再以鏈結製作出新的binary可執行檔案即可!而不必重新編譯其他沒有更動過的原始碼檔案。

gcc的簡單用法

/*在編譯的時候,依據作業環境給予優化執行速度*/

/*在進行binary file製作時,將鏈結的函式庫與相關的路徑填入*/

/*將編譯的結果輸出成某個特定檔名*/

在編譯的時候,輸出較多的訊息說明

比較重要的大概就是這一些。另外,我們通常稱-wall或者-o這些非必要的引數為旗標(flags),因為我們使用的是c程式語言,所以有時候也會簡稱這些旗標為cflags,這些變數偶爾會被使用的喔!尤其是在後頭會介紹的make相關的用法時,更是重要的很吶!^_^

從react start到co原始碼 二

react作為當前十分流行的前端框架,相信很多前端er都有蠢蠢欲動的學習它的想法。工欲善其事,必先利其器。這篇文章就簡單的給大家介紹一下如何我快速的搭建乙個react前端開發環境。主要針對於react小白,大神不喜勿噴。從標題可以看出,這裡不會僅僅只介紹一下react的開發環境如何搭建。我將這個系列...

CentOS上從原始碼安裝python

1.準備編譯環境 yum install gcc yum install cpp yum install gcc c yum install ncurses yum install ncurses devel yum install gd devel php gd yum install zlib ...

操作rpm原始碼包

命令配置 rpm ivh filename rpm i example.rpm 安裝 example.rpm 包 rpm iv example.rpm 安裝 example.rpm 包並在安裝過程中顯示正在安裝的檔案資訊 rpm ivh example.rpm 安裝 example.rpm 包並在安...