您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“l(fā)inux中怎么用autoscan和automake由makefile.am自動(dòng)生成makefile”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“l(fā)inux中怎么用autoscan和automake由makefile.am自動(dòng)生成makefile”這篇文章吧。
如何使用autoconf和automake兩個(gè)工具來幫助我們自動(dòng)地生成符合自由軟件慣例的Makefile,這樣就可以象常見的GNU程序一樣,只要使用“./configure”,“make”,“make instal”就可以把程序安裝到Linux系統(tǒng)中去了。
* 在開始使用autoconf和automake之前,首先確認(rèn)你的系統(tǒng)安裝有GNU的如下軟件:
1. automake
2. autoconf
3. m4
4. perl
5. 如果你需要產(chǎn)生共享庫(shared library)則還需要GNU Libtool。
* 介紹方法之前,大家先記下autoconf和automake工作的幾個(gè)步驟,步驟解釋如下:
1、由你的源文件通過autoscanf命令生成configure.scan文件,然后修改
configure.scan文件并重命名為configure.in
2、由aclocal命令生成aclocal.m4
3、由autoconf命令生成configure
注:很重要!
如果這里緊接著直接進(jìn)行第4步:
automake --add-missing:后會(huì)出現(xiàn)錯(cuò)誤:configure.in:8:required file
`./config.h.in' not found
緊接著./configure后會(huì)出現(xiàn) config.status: error: cannot find input file:
config.h
解決辦法:在automake --add-missing之前執(zhí)行autoheader就ok了,一般網(wǎng)上的資料
很少有人提到這一步,大家也都是轉(zhuǎn)來轉(zhuǎn)去,所有會(huì)導(dǎo)致錯(cuò)誤的發(fā)生。
4、編輯一個(gè)Makefile.am文件并由automake(automake --add-missing)命令生成
Makefile.in文件
5、./configure命令生成Makefile (后面有命令介紹)
實(shí)戰(zhàn):我的源程序結(jié)構(gòu)如下:總共兩個(gè)目錄:viaencode/ 、videolib/,
viaencode/下有兩個(gè)源文件和一個(gè)makefile.am文件: encodeapi.c 、viaenc.c 、 Makefile.am
videolib/下有四個(gè)頭文件: MP4EncApi.h、hw_lib.h、ViaApi.h 、itu.h,以及六個(gè).a庫文件:libext_device_ctrl.a 、libhwdec.a、libhwenc.a、libitu.a、libuserdev.a、libvia.a。生成目標(biāo)程序viaenc要下載到開板中運(yùn)行。
按照如下步驟來自動(dòng)生成Makefile吧:
1、進(jìn)入viaencode/目錄,運(yùn)行autoscan命令,命令如下:
# cd viaencode/
# autoscan
2、ls會(huì)發(fā)現(xiàn)多了一個(gè)configure.scan文件。修改此文件,在AC_INIT宏之后加入AM_INIT_AUTOMAKE(viaenc, 1.0),這里hello是你的軟件名稱,1.0是版本號(hào),即你的這些源程序編譯將生成一個(gè)軟件viaenc-1.0版。“然后把 configure.scan文件的最后一行AC_OUTPUT宏填寫完整變成AC_OUTPUT(Makefile),表明autoconf和 automake最終將生成Makefile文件”,這樣的話會(huì)出錯(cuò),因?yàn)橹坝幸痪銩C_CONFIG_FILES([Makefile]),所以我沒變。最后把configure.scan文件改名為configure.in。
3、運(yùn)行aclocal命令,ls會(huì)發(fā)現(xiàn)多了一個(gè)aclocal.m4文件。
4、然后運(yùn)行autoconf命令,ls將發(fā)現(xiàn)生成了一個(gè)可執(zhí)行的configure命令。
5、執(zhí)行autoheader,前面已講過。
6、編輯一個(gè)Makefile.am文件,已有,文件內(nèi)容如下:
bin_PROGRAMS = viaenc
viaenc_SOURCES = viaenc.c encodeapi.c
AM_CFLAGS = -I../videolib
LDADD = -L../videolib -lvia -litu -lhwdec -lext_device_ctrl -lhwenc - lpthread -luserdev
7、運(yùn)行automake --add-missing命令。屏幕提示如下:
automake: configure.in: installing `./install-sh'
automake: configure.in: installing `./mkinstalldirs'
automake: configure.in: installing `./missing'
8、運(yùn)行configure命令來生成一個(gè)Makefile文件,輸入./configure命令即可 9、因?yàn)閼?yīng)用程序是要下載到開發(fā)版中運(yùn)行,所以必須修改交叉編譯工具。修改Makefile中的CC = gcc,改為指向自己的交叉編譯工具,CC=/usr/local/arm/gcc-3.4.4-glibc-2.3.6/bin/arm-linux-gcc。否則會(huì)出錯(cuò)!?。?/strong>
運(yùn)用autoconf和automake的最大好處是,你的程序以源程序方式發(fā)布后,其它所有人只需要依次輸入./configure ,make,make install命令就可以把你的程序安裝在自己的電腦上運(yùn)行了。所有符合GNU標(biāo)準(zhǔn)的UNIX/Linux都不需要再修改Makefile里的任何字符。
以上是“l(fā)inux中怎么用autoscan和automake由makefile.am自動(dòng)生成makefile”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。