linux中怎么用autoscan和automake由makefile.am自动生成makefile
admin
2023-02-04 12:40:05
0

如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用“./configure”,“make”,“make instal”就可以把程序安装到Linux系统中去了。

* 在开始使用autoconf和automake之前,首先确认你的系统安装有GNU的如下软件:
1. automake
   2. autoconf
   3. m4
   4. perl
   5. 如果你需要产生共享库(shared library)则还需要GNU Libtool。

* 介绍方法之前,大家先记下autoconf和automake工作的几个步骤,步骤解释如下:

1、由你的源文件通过autoscanf命令生成configure.scan文件,然后修改

configure.scan文件并重命名为configure.in
   2、由aclocal命令生成aclocal.m4
   3、由autoconf命令生成configure

注:很重要

如果这里紧接着直接进行第4步:

automake --add-missing:后会出现错误:configure.in:8:required file

  `./config.h.in' not found

紧接着./configure后会出现 config.status: error: cannot find input file:

config.h

解决办法:在automake --add-missing之前执行autoheader就ok了,一般网上的资料

很少有人提到这一步,大家也都是转来转去,所有会导致错误的发生。


4、编辑一个Makefile.am文件并由automake(automake --add-missing)命令生成

  Makefile.in文件
   5、./configure命令生成Makefile    (后面有命令介绍)

实战:我的源程序结构如下:总共两个目录:viaencode/ 、videolib/,
viaencode/下有两个源文件和一个makefile.am文件: encodeapi.c   、viaenc.c 、 Makefile.am
videolib/下有四个头文件: MP4EncApi.h、hw_lib.h、ViaApi.h 、itu.h,以及六个.a库文件:libext_device_ctrl.a 、libhwdec.a、libhwenc.a、libitu.a、libuserdev.a、libvia.a。生成目标程序viaenc要下载到开板中运行。


   按照如下步骤来自动生成Makefile吧:
1、进入viaencode/目录,运行autoscan命令,命令如下:
# cd viaencode/
# autoscan
2、ls会发现多了一个configure.scan文件。修改此文件,在AC_INIT宏之后加入AM_INIT_AUTOMAKE(viaenc, 1.0),这里hello是你的软件名称,1.0是版本号,即你的这些源程序编译将生成一个软件viaenc-1.0版。“然后把 configure.scan文件的最后一行AC_OUTPUT宏填写完整变成AC_OUTPUT(Makefile),表明autoconf和 automake最终将生成Makefile文件”,这样的话会出错,因为之前有一句AC_CONFIG_FILES([Makefile]),所以我没变。最后把configure.scan文件改名为configure.in。
3、运行aclocal命令,ls会发现多了一个aclocal.m4文件。
4、然后运行autoconf命令,ls将发现生成了一个可执行的configure命令。

5、执行autoheader,前面已讲过。

6、编辑一个Makefile.am文件,已有,文件内容如下:
   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、运行automake --add-missing命令。屏幕提示如下:
automake: configure.in: installing `./install-sh'
automake: configure.in: installing `./mkinstalldirs'
automake: configure.in: installing `./missing'
8、运行configure命令来生成一个Makefile文件,输入./configure命令即可        9、因为应用程序是要下载到开发版中运行,所以必须修改交叉编译工具。修改Makefile中的CC = gcc,改为指向自己的交叉编译工具,CC=/usr/local/arm/gcc-3.4.4-glibc-2.3.6/bin/arm-linux-gcc。否则会出错!!!

运用autoconf和automake的最大好处是,你的程序以源程序方式发布后,其它所有人只需要依次输入./configure ,make,make install命令就可以把你的程序安装在自己的电脑上运行了。所有符合GNU标准的UNIX/Linux都不需要再修改Makefile里的任何字符。

相关内容

热门资讯

【第一财经】“玄龙炸/金/花有... 您好:玄龙炸/金/花这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这...
玩家分享攻略“新蜜瓜拼十是不是... 有 亲,根据资深记者爆料新蜜瓜拼十是可以开挂的,确实有挂(咨询软件无需打...
玩家攻略科普“新超圣牛牛是不是... 家人们!今天小编来为大家解答新超圣牛牛透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买...
【第一消息】“欢聚斗地主究竟有... 有 亲,根据资深记者爆料欢聚斗地主是可以开挂的,确实有挂(咨询软件无需打...
今日重大发现“荊州晃晃麻将开挂... 您好:荊州晃晃麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款...
玩家最新攻略“战皇炸/金/花辅... 家人们!今天小编来为大家解答战皇炸/金/花透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪...
今日重大消息“微乐山东麻将到底... 家人们!今天小编来为大家解答微乐山东麻将透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里...
今日重大通报“青松游戏究竟有挂... 家人们!今天小编来为大家解答青松游戏透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...
我来教教您“麻友圈2怎么开挂?... 家人们!今天小编来为大家解答麻友圈2透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...
玩家攻略科普“甘孜娱乐中心真的... 家人们!今天小编来为大家解答甘孜娱乐中心透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里...