溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

linux中怎么用autoscan和automake由makefile.am自動(dòng)生成makefile

發(fā)布時(shí)間:2021-10-25 15:40:11 來源:億速云 閱讀:391 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要為大家展示了“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è)資訊頻道!

向AI問一下細(xì)節(jié)

免責(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)容。

AI