Linux之編譯相關(guān)

編譯前準(zhǔn)備工作

  • yum install "Development Tools" "Server Platform Development"

C語言程序源代碼編譯安裝步驟

1称簿、 ./configure :使用這個(gè)模板makefile.in生成makefile文件
  • 通過選項(xiàng)傳遞參數(shù),指定啟用特性,安裝路徑等;執(zhí)行時(shí)會(huì)參考用戶的指定以及makefile.in文件生成makefile
2、make: 檢查依賴到的外部環(huán)境
  • 根據(jù)Makefile文件去構(gòu)建應(yīng)用程序,其make工具是C、C++項(xiàng)目管理器籽懦,調(diào)用GCC編譯器,對(duì)C ,C++的程序進(jìn)程編譯
3锉试、make install
  • 利用腳本把二進(jìn)制程序放到相應(yīng)目錄
4猫十、導(dǎo)出二進(jìn)制程序目錄至環(huán)境變量PATH中
  • 編輯/etc/profile.d/name.sh
  • export PATH=$PATH:/usr/local/bin
5览濒、輸出庫(kù)文件路徑
  • 編輯/etc/ld.so.conf.d/name.conf
  • 直接添加庫(kù)文件的路徑即可
  • 使用ldd命令重讀庫(kù)配置文件輸出至系統(tǒng)緩存,可以使用-v選項(xiàng)拖云,查看詳細(xì)信息
6贷笛、導(dǎo)出頭文件
  • ln -sv /usr/local/apache2/include /usr/include
  • 或者 ln -sv /usr/local/apache2/include/* /usr/include
7、導(dǎo)出幫助手冊(cè)
Centos 6
  • 編輯/etc/man.config
  • 添加manpath /path/to/dir
Centos 7
  • 編輯/etc/man_db.conf
  • 添加manpath_map /path/to/dir
8宙项、制作服務(wù)管理腳本
  • 存放至/etc/init.d/目錄下乏苦,并賦于其執(zhí)行權(quán)限
  • 使用chkconfig --add NAME
  • 將服務(wù)添加開機(jī)自啟,chkconfig NAME on

編譯內(nèi)核

編譯前提:

1、準(zhǔn)備好開發(fā)環(huán)境
2尤筐、獲取目標(biāo)主機(jī)上硬件設(shè)備的相關(guān)信息
3汇荐、獲取到目標(biāo)主機(jī)系統(tǒng)功能的相關(guān)信息,例如:是否要啟用文件系統(tǒng)等模塊
4盆繁、獲取內(nèi)核源代碼包:www.kernel.org

準(zhǔn)備開發(fā)環(huán)境
Centos 6
  • 安裝"Development Tools"掀淘,"Server Platform Development"包組
Centos 7
  • 安裝"Development tools","Sserver paltform development","Desktop platform development"包組
注意:由于編譯內(nèi)核的界面程序由ncurses軟件提供,需要安裝主程序包和開發(fā)包油昂,才能運(yùn)行make menuconfig程序
查看設(shè)備硬件信息
  • cat /proc/cpuinfo
  • lscpu
  • x86info
  • lspci
  • lsusb
  • lsblk
  • hal-device(Centos 6)
內(nèi)核編譯過程
1革娄、獲取源代碼
2、tar xf linux-3.10.67.tar.xz -C /usr/src
3冕碟、ln -sv lunux-3.10.67 linux
4拦惋、cd linux
5、cp /boot/config-3.10.67-229.el7.x86_64 .config
  • 這步是借用redhat所提供的編譯配置文件來進(jìn)行編譯配置
6安寺、手動(dòng)定制內(nèi)核功能選項(xiàng)
  • make menuconfig
7厕妖、編譯內(nèi)核
  • make [-j # ] ,-j #:是指定使用#個(gè)邏輯CPU進(jìn)行編譯,以提高編譯速度
8挑庶、安裝內(nèi)核模塊
  • make modules_install
    • 此步會(huì)在/usr/lib/modules/[VERSION-RELEASE]/下生成相應(yīng)的模塊文件和模塊依賴關(guān)系文件
9言秸、安裝內(nèi)核
  • make install
    • 此步會(huì)將內(nèi)核文件、ramdisk文件自動(dòng)安裝至/boot目錄下挠羔,并以相應(yīng)的版本命名存放井仰,并且還會(huì)將grub.conf文件配置好新的內(nèi)核文件埋嵌。
注意:如果編譯好的內(nèi)核在開機(jī)引導(dǎo)出現(xiàn)故障時(shí)破加,導(dǎo)致無法進(jìn)入系統(tǒng),可以在開機(jī)grub引導(dǎo)界面雹嗦,傳遞內(nèi)核參數(shù)init=/bin/bash范舀,以此啟用bash程序,以此來完成修復(fù)工作了罪。
編譯一部分代碼
  • 只編譯某子目錄中的相關(guān)代碼
    • cd /usr/src/linux
    • make path/to/dir
  • 只編譯一個(gè)特定的模塊
    • cd /usr/src/linux
    • make path/to/dir/file.ko
交叉編譯
編譯的目標(biāo)平臺(tái)與當(dāng)前編譯操作所在的平臺(tái)不同
  • make ARCH=arch_name
要獲取特定目標(biāo)平臺(tái)的使用幫助
  • make ARCH= arm help
在執(zhí)行過編譯操作的內(nèi)核源碼樹上做重新編譯
  • make clean
    • 清理編譯生成的絕大多數(shù)文件锭环,但會(huì)保留.config配置文件,以編譯外部模塊所需要的文件
  • distclean
    • 相當(dāng)于mrproper泊藕,額外清理各種pathches以及編輯器備份文件
  • mrproper
    • 清理編譯生成的所有文件辅辩,包括配置生成的config文件及某些配置文件
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子玫锋,更是在濱河造成了極大的恐慌蛾茉,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撩鹿,死亡現(xiàn)場(chǎng)離奇詭異谦炬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)节沦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門键思,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人甫贯,你說我怎么就攤上這事吼鳞。” “怎么了叫搁?”我有些...
    開封第一講書人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵赖条,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我常熙,道長(zhǎng)纬乍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任裸卫,我火速辦了婚禮仿贬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘墓贿。我一直安慰自己茧泪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開白布聋袋。 她就那樣靜靜地躺著队伟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪幽勒。 梳的紋絲不亂的頭發(fā)上嗜侮,一...
    開封第一講書人閱讀 49,046評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音啥容,去河邊找鬼锈颗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛咪惠,可吹牛的內(nèi)容都是我干的击吱。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼遥昧,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼覆醇!你這毒婦竟也來了朵纷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤永脓,失蹤者是張志新(化名)和其女友劉穎柴罐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體憨奸,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡革屠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了排宰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片似芝。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖板甘,靈堂內(nèi)的尸體忽然破棺而出党瓮,到底是詐尸還是另有隱情,我是刑警寧澤盐类,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布寞奸,位于F島的核電站,受9級(jí)特大地震影響在跳,放射性物質(zhì)發(fā)生泄漏枪萄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一猫妙、第九天 我趴在偏房一處隱蔽的房頂上張望瓷翻。 院中可真熱鬧,春花似錦割坠、人聲如沸齐帚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽对妄。三九已至,卻和暖如春敢朱,著一層夾襖步出監(jiān)牢的瞬間剪菱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工蔫饰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留琅豆,地道東北人愉豺。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓篓吁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蚪拦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子杖剪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 《鳥哥的Linux私房菜》筆記 提到Linux冻押,就不得不提GNU和GPL授權(quán)所產(chǎn)生的自由軟件(free softw...
    Zhang21閱讀 12,446評(píng)論 0 15
  • 我們說的Linux其實(shí)指的就是 內(nèi)核(kernel)而已。這個(gè)內(nèi)核控制你主機(jī)的所有硬件并提供系統(tǒng)所有的功能盛嘿,所以它...
    Zhang21閱讀 7,379評(píng)論 0 18
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理洛巢,服務(wù)發(fā)現(xiàn),斷路器次兆,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,135評(píng)論 2 34
  • 2014-05-26 21:21:38構(gòu)建Linux 編譯Linux BeagleBone Black 14年即將...
    外星間諜閱讀 3,423評(píng)論 0 9