Linux(17)-Make编译,Configure
Make編譯機制,Configure
- 1.Make機制
- demo1.make編譯
- demo2.make清理
- demo3:make 安裝
- demo4:make 卸載
- 2.configure
- 2.1 Autoconf
- 2.2 軟件的源碼安裝
軟件發(fā)布的一些基礎(chǔ)知識。
內(nèi)存泄漏–如果一個長時間運行的程序,不斷申請新的控價,而且不釋放。內(nèi)存空間被一點一點地消耗光。
內(nèi)存管理機制
free 命令查看內(nèi)存使用情況(單位為KB)
發(fā)布軟件
本機編譯得到的二進制文件,需要很多庫文件來協(xié)助才能運行的起來。
查看程序的依賴庫,使用ldd命令。
lld ./rubbish1115
因為需要眾多庫文件協(xié)助,所以在Linux上發(fā)布軟件時都是發(fā)布源碼包,然后在目標系統(tǒng)上再編譯一遍。
1.Make機制
Make 也是一個程序,用于統(tǒng)籌規(guī)劃文件編譯。通過Makefile來實現(xiàn)統(tǒng)籌規(guī)劃。能夠依據(jù)文件修改的時間,智能地判斷出哪些模塊需要重新編譯,重新連接。
windows下的VC也是類似的作用,只不過把他們都用圖形界面封裝了起來。
make 命令運行的時候,會在當前目錄下查抄Makefile 或者 makefile文件。找到就執(zhí)行,沒找到就報錯。makefile每一段的格式都類似
目標:原料 <tab>加工方法demo1.make編譯
all:main.o part1.o part2.o gcc main.o part1.o part2.o -o mybin main.o:mian.cgcc -c main.c part1.o:part1.cgcc -c part1.c part2.o:part1.cgcc -c part2.cdemo2.make清理
clean:rm ./*.orm mybindemo3:make 安裝
將編譯好的mybin文件,復(fù)制到系統(tǒng)中相應(yīng)的目錄中,完成安裝
install:mybincp ./mybin /user/bin/demo4:make 卸載
作為一個標準的GNU軟件,生成的makefile中應(yīng)該高喊uninstall的定義。如果不規(guī)范的軟件,沒有提供uninstall方法,就只能手動刪除了。
make uninstall
(瞎猜,盲寫)
uninstall:rm /user/bin/mybin2.configure
檢查編譯的各種條件是否必備,檢查各種條件都必備之后,會生成Makefile文件。
鐵打的make只有一個,流水的configure每個軟件一個。
運行./configure 之后,會檢查各種各樣的條件,例如 “checking for xxxxx yes/no”, 不是必須的材料沒有了也就沒有了。如果必須的東西沒有了,那么confiugre就會報錯并停止。
2.1 Autoconf
自動生成configure文件(幾萬行,自己敲時不可能了。)
autoscan
# AC_INIT(main.c)--說明這個工程主要的圖紙是那個文件. # AM_INIT_AUTOMAKE(rubbish1115,1.0)--說明這個項目的名稱,叫做rubbish115, 版本是1.0. # AC_PROG_CC--configure需要檢查C語言編譯器是否正常. # AC_OUTPUT(Makefile)--configure需要產(chǎn)生的文件叫Makefile.aclocal
3.autoconf-依據(jù)configure.in 和aclocal.m4生成configure腳本
4.automake–生成configure腳本能夠識別和使用的makefile.in文件(自己寫的makefile文件不管用)。需要(人為)提供草稿文件makefile.am。
makefile.am文件內(nèi)容
Automake主要幫助開發(fā)GNU軟件的人員來維護軟件,所以在執(zhí)行Automake時,默認會檢查目錄下是否存在標準GNU軟件中應(yīng)具備的文件,例如NEWS,AUTHOR, ChangeLog等文件。設(shè)置foreign,則會忽略對這些文件的檢查。
2.2 軟件的源碼安裝
原料都準備好之后,依次運行以下三條命令,就能把軟件安裝上
./configure
make
make install
總結(jié)
以上是生活随笔為你收集整理的Linux(17)-Make编译,Configure的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在页游中LUA的应用(1)
- 下一篇: linux下的RPC