您的位置 首页 厂商

Linux下automake软件编译与发布快速入门

本例假设要产生一个simserver1的软件包,源文件只有1个,simserver1.cpp。使用了pthread库。1.运行autoscan扫描源码目录执行$autoscan执行后生成configu

本例假定要发生一个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用来查看打包的软件包是否正常。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/297945.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部