仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 896|回复: 9
打印 上一主题 下一主题

[其他Linux] 带来一篇Linux下automake软件编译与公布疾速进门

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 16:13:42 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在学习初期,你一定会遇到很多困难,或者说各种困难,所以你最好先将你linux中的重要内容备份,因为,在你学习的过程中,很可能将系统搞废(eg:源混乱等);
本例假定要发生一个simserver1的软件包,源文件只要1个,simserver1.cpp.利用了pthread库。
1.运转autoscan扫描源码目次
实行
$autoscan
实行后天生configure.scan.
2.编纂configure.in文件
步骤1实行后天生了configure.scan,本步骤必要复制一份该文件并定名为configure.in,然后编纂该文件。
命令以下:
$cpconfigure.scanconfigure.in
$vimconfigure.in
用vim编纂器翻开后,文件原内容以下:
configure.scan入手下手
#-*-Autoconf-*-
#Processthisfilewithautoconftoproduceaconfigurescript.
AC_PREREQ(2.61)
AC_INIT(FULL-PACKAGE-NAME,VERSION,BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([simserver1.cpp])
AC_CONFIG_HEADER([config.h])
#Checksforprograms.
AC_PROG_CXX
#Checksforlibraries.
#FIXME:Replace`mainwithafunctionin`-lpthread:
AC_CHECK_LIB([pthread],[main])
#Checksforheaderfiles.
AC_CHECK_HEADERS([arpa/inet.hnetinet/in.hsys/socket.h])
#Checksfortypedefs,structures,andcompilercharacteristics.
#Checksforlibraryfunctions.
AC_HEADER_STDC
AC_CHECK_FUNCS([bzeroinet_ntoasocket])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
configure.scan停止
编纂修正成以下内容:
configure.in入手下手
#-*-Autoconf-*-
#Processthisfilewithautoconftoproduceaconfigurescript.
AC_INIT(simserver1.cpp)#这个宏用来反省源代码地点的路径,放在文件开首
AM_INIT_AUTOMAKE(simserver1,1.0)   #形貌软件包称号及版本号
#Checksforprograms.
AC_PROG_CXX#利用C++
#Checksforlibraries.
#Checksforheaderfiles.
AC_CHECK_HEADERS([arpa/inet.hnetinet/in.hsys/socket.h])
#Checksfortypedefs,structures,andcompilercharacteristics.
#Checksforlibraryfunctions.
AC_HEADER_STDC
AC_CHECK_FUNCS([bzeroinet_ntoasocket])
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.hhelloworld.c.
假如你在bin_PROGRAMS界说了多个可实行文件,则对应每一个可实行文件都要界说绝对的filename_SOURCES.
LIBS
这个用来指定链接的程序库。如LIBS+=-lpthread,指定链接pthread库。
实行命令:
$vimMakefilemam
进进编纂界面,输出内容以下:
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另有以下几个命令:
makeinstall能够将simserver1安装到/usr/local/bin目次下;
makeclean可扫除前次编译了局
makedist可将代码打包成packagename-ver.tar.gz文件
makedistcheck用来反省打包的软件包是不是一般。
</p>
只要了解了Linux的基础之后,应该就可以很轻易的解决掉这方面的问题。而有些朋友们常常一接触Linux就是希望构架网站,根本没有想到要先了解一下Linux的基础。这是相当困难的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-15 12:42

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表