Linux下automake软件编译与发布快速入门
【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 helloworld.c 。
如果你在bin_PROGRAMS定义了多个可执行文件 , 则对应每个可执行文件都要定义相对的filename_SOURCES 。
LIBS
这个用来指定链接的程序库 。如LIBS= -lpthread , 指定链接pthread库 。
执行命令:
$vim Makefilemam进入编辑界面 , 输入内容如下:
推荐阅读
- 新手学堂:Linux下Makefile文件简单概念
- 解决双系统开机选项不显示Linux系统问题
- Socket相关程序:从Windows移植到Linux
- 新手学堂:Linux下载工具wget和axel介绍
- 酒曲在多少温度下死亡 怎么判断酒曲坏了
- 4G内存下Linux Mtrr表不正确的解决方法
- 什么什么不乐
- 什么情况下判罚点球
- 宿主机WindowsXP与虚拟机Linux之间Telnet
- 飞机下雨延误一般多久