Linux下automake软件编译与发布快速入门
本例假设要产生一个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 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |