广嵌科技  广嵌教育  English  
 
首页 > 操作系统 > Linux > Linux下automake软件编译与发布快速入门
Linux下automake软件编译与发布快速入门
来源:赛迪网 作者:korn 时间:2008-05-16 发布人:华女

  本例假设要产生一个simserver1的软件包,源文件只有1个,simserver1.cpp。使用了pthread库。

  1.运行autoscan扫描源码目录

  执行

  $autoscan

  执行后生成configure.scan。

  2.编辑configure.in文件

  步骤1执行后生成了configure.scan,本步骤需要复制一份该文件并命名为configure.in,然后编辑该文件。

  命令如下:

  $cp configure.scan configure.in

  $vim configure.in

  用vim编辑器打开后,文件原内容如下:

  configure.scan开始

  # -*- Autoconf -*-

  # Process this file with autoconf to produce a configure script.

  AC_PREREQ(2.61)

  AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)

  AC_CONFIG_SRCDIR([simserver1.cpp])

  AC_CONFIG_HEADER([config.h])

  # Checks for programs.

  AC_PROG_CXX

  # Checks for libraries.

  # FIXME: Replace `main' with a function in `-lpthread':

  AC_CHECK_LIB([pthread], [main])

  # Checks for header files.

  AC_CHECK_HEADERS([arpa/inet.h netinet/in.h sys/socket.h])

  # Checks for typedefs, structures, and compiler characteristics.

  # Checks for library functions.

  AC_HEADER_STDC

  AC_CHECK_FUNCS([bzero inet_ntoa socket])

  AC_CONFIG_FILES([Makefile])

  AC_OUTPUT

  configure.scan结束

  编辑修改成如下内容:

  configure.in开始

  # -*- Autoconf -*-

  # Process this file with autoconf to produce a configure script.

  AC_INIT(simserver1.cpp) #这个宏用来检查源代码所在的路径,放在文件开头

  AM_INIT_AUTOMAKE(simserver1,1.0)   #描述软件包名称及版本号

  # Checks for programs.

  AC_PROG_CXX #使用C++

  # Checks for libraries.

  # Checks for header files.

  AC_CHECK_HEADERS([arpa/inet.h netinet/in.h sys/socket.h])

  # Checks for typedefs, structures, and compiler characteristics.

  # Checks for library functions.

  AC_HEADER_STDC

  AC_CHECK_FUNCS([bzero inet_ntoa socket])

  AC_OUTPUT(Makefile) #这个宏是我们要输出的Makefile的名字

  configure.in结束

  3.运行aclocal生成aclocal.m4文件

  configure.in文件编辑保存完后,用aclocal命令生成aclocal.m4文件。

  执行以下命令:

  $aclocal
 
  然后用ls列出生成的文件。如果没有找到aclocal.m4文件,那一般是configure.in文件不对,修改后再重试。

  4.运行autoconf生成configure文件

  用autoconf命令来生成configure可执行文件。

  执行以下命令:

  $autoconf

  然后用ls检查configure是否已经成功生成。

  5.建立Makefile.am文件

  Makefile.am是用来生成Makefile.in的,需要你手工书写。Makefile.am中定义了一些内容:

  AUTOMAKE_OPTIONS

  这个是automake的选项。在执行automake时,它会检查目录下是否存在标准GNU软件包中应具备的各种文件,例如AUTHORS、ChangeLog、NEWS等文件。我们将其设置成foreign时,automake会改用一般软件包的标准来检查。

  bin_PROGRAMS

  这个是指定我们所要产生的可执行文件的文件名。如果你要产生多个可执行文件,那么在各个名字间用空格隔开。

  helloworld_SOURCES

  这个是指定产生“helloworld”时所需要的源代码。如果它用到了多个源文件,那么请使用空格符号将它们隔开。比如需要 helloworld.h,helloworld.c那么请写成helloworld_SOURCES= helloworld.h helloworld.c。

  如果你在bin_PROGRAMS定义了多个可执行文件,则对应每个可执行文件都要定义相对的filename_SOURCES。

  LIBS

  这个用来指定链接的程序库。如LIBS += -lpthread,指定链接pthread库。

  执行命令:

  $vim Makefilemam

  进入编辑界面,输入内容如下:

  AUTOMAKE_OPTIONS=foreign

  bin_PROGRAMS=simserver1 #软件包名称

  simserver1_SOURCES=simserver1.cpp  #源文件列表,如果有多个则用空格分开

  LIBS += -lpthread #链接pthread库

  6.运行automake

  执行automake --add-missing来产生Makefile.in。

  $automake --add-missing
 
  执行后应该生成Makefile.in文件.

  7.运行configure生成Makefile

  执行:

  $./configure

  8.执行make生成可执行文件

  $make

  执行后应该编译输出simserver1可执行文件.

  make还有以下几个命令:

  make install可以将simserver1安装到/usr/local/bin目录下;

  make clean可清除上次编译结果

  make dist可将代码打包成packagename-ver.tar.gz文件

  make distcheck用来检查打包的软件包是否正常。


·上一条:离子迁移谱仪嵌入式系统的设计
·下一条:Linux系统中加入自定义Shell为系统服务

评论
发布者 标题 发布日期
暂没有任何评论
以下发言只是广嵌网会员个人意见,非本网立场 查看更多评论

发表评论
·尊重网上道德,遵守中华人民共和国的各项有关法律法规。
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任。
·本站管理人员有权保留或删除其管辖留言中的任意内容,本站有权在网站内转载或引用您的评论。
·参与本评论即表明您已经阅读并接受上述条款。
标题:
发布者:
内容:
验证码:

相关信息
·Linux 2.6 内核..
·linux 电源管理
·Linux内核技术分析
·Linux软件开发平台加..
·嵌入式设备上的 Linu..
·基于嵌入式Linux的网..
·MiniGUI-Thre..
·修改Linux操作系统下..
·最好的阻止SSH暴力破解..
·代号无畏的山羊 Ubun..
Copyright ©2005-2007 广东省嵌入式软件公共技术中心.All Rights Reserved.版权所有 复制必究
客户服务支持:020-32068395-832 24小时服务热线:13631411558
技术支持与报障:gdesc@midea.com.cn 020-32068395-807/809
粤ICP备05104135号