分享
 
 
 

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

王朝system·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有