范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

利用autotool工具编译和安装

  平时自己写的程序多是直接写Makefile,大型的开源C代码,多是通过autotool工具来生成,需要学习下。为了具备通用性,用工作中实际程序来测试。 一 用autoscan生成configure.scan
  步骤很简单,解压程序后,在源码目录运行autoscan就会生成configure.scan 如下: #autoscan # ll configure.scan  -rw-r--r-- 1 root root 1108 3月  25 20:58 configure.scan
  说明:
  1、 AC_PREREQQ宏声明本文件要求的autoconf版本,这里是2.69 2、 AC_INIT定义软件的名称和信息。(DULL-PACKAGE-NAME为软件名,VERSION为软件的版本号,BUG-REPORT-ADDRESS为bug的报告地址,一般为软件作者的邮箱) 3、 AC_CONFIG_SRCDIR用来侦测指定的源码文件是否存在,确定源码目录的有效性。此 4、 AC_CONFIG_HEADER用于生成config.h文件,以便autoheader使用 5、 AC_PROG_CC用来指定编译器,以便不指定的时候默认为gcc 6、 AC_OUTPUT用来设定config要产生的文件。如果是Makefile,config会把它检查出来的结果带入Makefile.in文件产生合适的Makefile.
  下面需要修改configure.scan 为configure.ac 且修改内容如下: [root@localhost trunk]# cat configure.ac #                                               -*- Autoconf -*- # Process this file with autoconf to produce a configure script.  AC_PREREQ([2.69]) AC_INIT(flow, 2.6, null) AM_INIT_AUTOMAKE(flow,2.6) AC_CONFIG_SRCDIR([aes.c]) AC_CONFIG_HEADERS([config.h])  # Checks for programs. AC_PROG_CC  # Checks for libraries. # Checks for libraries. AC_CHECK_LIB(pthread, pthread_create)    # Checks for header files. AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h locale.h malloc.h netinet/in.h stddef.h stdint.h stdlib.h string.h sys/socket.h sys/time.h unistd.h])  # Checks for typedefs, structures, and compiler characteristics. AC_CHECK_HEADER_STDBOOL AC_C_INLINE AC_TYPE_INT32_T AC_TYPE_INT64_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_SSIZE_T AC_TYPE_UINT32_T AC_TYPE_UINT64_T AC_TYPE_UINT8_T AC_CHECK_TYPES([ptrdiff_t])  # Checks for library functions. AC_FUNC_FORK AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK AC_FUNC_MALLOC AC_FUNC_MKTIME AC_FUNC_REALLOC AC_FUNC_STRTOD AC_CHECK_FUNCS([bzero dup2 gethostname gettimeofday localeconv localtime_r memchr memmove memset mkdir pow regcomp socket strchr strdup strerror strncasecmp strrchr strstr strtol strtoul tzset]) AC_OUTPUT(Makefile etc/Makefile)
  1)主要是修改AC_INIT 三个中括号里面内容依次是软件名,版本名,bug报告地址; 2)添加AM_INIT_AUTOMAKE(软件名,版本) 这个宏是必须的,它描述了我们将要生成的软件包的名字及其版本号:PACKAGE是软件包的名字,VERSION是版本号。当你使用make dist命令时,它会给你生成一个类似helloworld-1.0.tar.gz的软件发行包,其中就有对应的软件包的名字和版本号。 3) 输出文件名也修改:AC_OUTPUT(Makefile) 二 configure的生成
  运行以下命令生成m4宏定义,比如我们使用的AM_INIT_AUTOMAKE,就是用aclocal生成的m4文件里面的: [root@localhost trunk]# aclocal
  如下: [root@localhost trunk]# ll *.m4 -rw-r--r-- 1 root root 41888 3月  25 21:13 aclocal.m4
  运行命令autoconf来生成configure文件: #autoconf
  运行configure文件,报错,缺少Makefile.in无法生成Makefile 三 编写Makefile.am
  编写为生成Makefile需要的Makefile.am 文件如下: AUTOMAKE_OPTIONS=foreign SUBDIRS=etc bindir=${prefix} bin_PROGRAMS=flow flow_SOURCES=aes.c args.c bloomfilter.c bstrlib.c cJSON.c conf.c deal_flow_file.c file.c flow_deal_main.c ini.c iptool.c list.c log.c mac2.c mac_tool.c   flow_LDFLAGS=  -fvisibility=hidden -L/usr/lib64/mysql AM_CFLAGS= -Wall -O0  -m64 -pg  -g    -D_REENTRANT -D_THREAD_SAFE  -std=gnu99 noinst_HEADERS=aes.h app_context.h args.h  Version.h workerid.h AM_CPPFLAGS=-I/usr/include/mysql flow_LDADD=-lmysqlclient -lm -lpthread
  说明: AUTOMAKE_OPTIONS: 设置成foreign会改用一般软件套件标准来检查,默认是gnu模式,automake会检查目录是否存在标准的GNU套件所具备的文档。 bin_PROGRAMS: 可指定程序名,这里面的bin表示要被安装到系统中,不想安装到系统中,使用noinst_PROGRAMS指定不按照程序到系统中,这里面我们指定程序名。 flow_SOURCES:生成可执行程序所需要的所有原文件,flow是前面指定的程序名字。 flow_CPPFLAGS: c预处理器参数,不是CFLAGS(c编译器参数),CXXFLAGS 表示C++编译器参数。 flow_LDFLAGS: c链接选项 noinst_HEADERS:不安装到系统中的头文件 flow_LDADD:链接需要的库 AM_CFLAGS:C编译选项 四 automake生成Makefile.in[root@localhost trunk]# automake --add-missing configure.ac:6: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated.  For more info, see: configure.ac:6: https://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation Makefile.am:6: warning: "INCLUDES" is the old name for "AM_CPPFLAGS" (or "*_CPPFLAGS")
  在Makefile.am 文件中 INCLUDES根据提示用AM_CPPFLAGS替换下。 正常生成Makefile.in之后,用configure 来结合Makefile.in 生成Makefile文件 #通过configure命令后 ./configure [root@localhost trunk]# ll Makefile -rw-r--r-- 1 root root 37366 3月  26 00:29 Makefile
  生成了Makefile文件。 五 编译和安装make && make install  六 定制安装
  刚才默认的安装是安装到/usr/local/下面的,我现在有两个需求: 一是指定安装路径,且不在bin下面,直接在那个目录下面; 二是需要把配置文件拷贝过去,安装后的目录如下; [root@localhost install-flow]# tree ../install-flow/ ../install-flow/   etc       finger.csv       flowDeal.conf       mac2org.db       MAC_out.log       mac.sig   flow  6.1 更改configure.ac 设置输出AC_OUTPUT(Makefile etc/Makefile)
  原来我们只有一个Makefile,由于配置我们也需要安装,所以增加了配置目录的etc/Makefile的输出。 6.2 制作Makefile.am
  更改根目录的Makefile.am 设置下安装目录bindir,且要设置递归调用Makefile子目录SUBDIRS,整体如下: bindir=${prefix} SUBDIRS=etc
  在配置文件目录etc下新建Makefile.am内容如下: configdir=${prefix}/etc config_DATA=finger.csv  flowDeal.conf  mac2org.db  MAC_out.log  mac.sig 6.3 重新编译安装
  重新生成和编译安装: #automake --add-missing #./configure --prefix=/root/flowdeal/install-flow #make && make install
  结果顺利完成编译和安装。 七 梳理 整体步骤1. autoscan 2. configure.scan ==> configure.in/configure.ac 3. aclocal 4. autoheader(可选,生成config.h.in) 5. Makefile.am(根据源码目录可能需要多个) 6. libtoolize –automake –copy –force(如果configure.ac中使用了libtool) 7. automake –add-missing 8. autoconf  9. ./configure && make && make install
  以前画的图:

云谈科学废弃的一次性口罩可以作为燃料利用新冠病毒的流行已有两年时间,全球对于对一次性塑料的需求显著增加,特别是对个人防护装备(PPE)的需求稳步增长,例如外科口罩,手套,面罩和防护服,以防止病毒传播。据估计,由于新冠病毒忘记2。4亿比特币钱包密码的男人我不要天天想汤玛斯的比特币账户里有2。4亿美金,他却只剩2次机会可以猜测遗失的密码,世界上有20的比特币陷入这样的困境。住在旧金山的工程师汤玛斯(StefanThomas)只剩下2次机会能猜他互联网行业真的开始走下坡路了吗?为什么那些创业大佬纷纷离开?互联网最近这几年是波诡云谲,让人有点看不懂。2019年的时候还是一片艳阳,各大平台在春节联欢晚会双11节为争夺流量拼的死去活来。2022年却风声鹤唳,各种亏损扑面而来,各大厂开始裁全面出手!这一次,任正非不是闹着玩,一众美企都逃不掉本文原创,请勿抄袭和搬运,违者必究在前几个网络时代,欧美国家吃尽了专利红利,高通,爱立信以及诺基亚大肆收取高额专利费用。凭借大量移动核心网络技术专利,全世界的手机厂商都得向他们交钱每日315司机随意加价平台猛抽成乱象丛生的货拉拉出路在何方来源青岛信网近日,约新茶涉黄事件将货拉拉推上了风口浪尖。3月20日,据一位杭州网友爆料称,有人在利用货拉拉平台发布约新茶暗语订单,并且备注了自己的微信号,疑似涉黄,司机接单后很是震24小时无人驾驶公交春笋号试跑百日载客过万,坐上这辆车你可以问它到哪里了春笋号上路百天,迎来第10000名乘客。4月8日,一辆国内首个24小时服务的车路协同无人驾驶接驳巴士东风悦享SharingVAN春笋号迎来第1万名幸运乘客,平稳行驶在车谷经开大道上下载APP才能看全文?装不装应由用户说了算近日,针对部分网站在用户浏览页面信息时被强制要求下载APP等问题,工业和信息化部督促相关互联网企业整改,引来网友拍手称快,可谓深得人心。装不装APP,应由用户说了算。维护好用户权益飞凡ER6售价15。68万起欢迎试乘试驾新能源汽车的发展已成为大势所趋,随着国际品牌的进入,汽车品牌不断增多,新能源车型也不断丰富,使得整个行业竞争变得尤为激烈。如何选择一款高品质高颜值高性价比的车就成了消费者关注的问题女拳主义盛行的豆瓣,一年被罚21次!和女拳为伍就是与社会为敌,请不要再助纣为虐豆瓣是近年来一款很火的软件,也是许多人装机的必备软件。然而,最近一段时间,豆瓣却摊上了大事,距离最终的被彻底封杀也只剩一步之遥。3月15日是国际消费者权益保护日,就在3。15晚会曝苹果制霸高端市场,国产手机阵营谁能一战?还有谁?只能是华为。目前来说苹果手机的系统和处理器依旧是处于前列的,但是基于网络信号和拍照机身等原因并不是最强的,相反国产手机这几年的努力也算是比较快已经向能力和处理器,目前来说也苹果库克用iPhone还想要侧载?那请你们用安卓去吧最近,众多媒体报道称,欧盟为了打压苹果的垄断,可能会出台一个政策,不仅要求苹果放开第三方支付渠道,还要苹果允许APP侧载。放开第三方支付渠道,大家都清楚,就是想让苹果不抽取30的佣
奥特曼收集,到目前出现过的奥特曼有哪些(2)银河奥特曼(UltramanGinga,)身高微型40米无限大体重040000吨无限大人间体礼堂光变身器银河火花绝招银河穿击光线礼堂光用神秘道具银河火花变身成的神秘英雄。一般情况下欧洲杯历史首个两届赞助席位被vivo拿下,这次苹果三星钱给少了说起手机界的跨界,有人认为华为玩的十分通透,毕竟保时捷系列收获了一大批粉丝的心,而这次vivo用实际表现证明了自己同样也能把跨界玩出花样来!在今年6月,欧洲杯再次闯入各大球迷的眼界前端CSS学习笔记泡泡效果效果视频加载中代码!DOCTYPEhtmlhtmllangenheadmetacharsetutf8styletypetextcss。boxwidth343pxheight100p前端CSS学习笔记2D破碎盾牌复原过渡效果效果视频加载中代码!DOCTYPEhtmlhtmlheadlangenmetacharsetUTF8titletitlestyletypetextcssbodybackground子弹短信火不过三个月这两天朋友圈到处都在刷屏子弹短信的二维码,这个像极了网易公开课的那些刷屏海报,能在朋友圈刷屏的除了海报h5小游戏等,还有拼多多,这次又增加了一个app子弹短信,大家看着兴趣很高涨,李佳琦薇娅高居淘系双雄平台流量形态成金字塔?10月20日,淘宝双十一首轮预售鸣锣开卖,当日除了天量的成交规模以外,最引人注意的恐怕就是淘系两大主播李佳琦薇娅的个人战绩!当天薇娅和李佳琦的淘宝直播间一晚上的观看人数都超过了2个玖月奇迹为什么比不过凤凰传奇?在2011年,第一次登上春晚舞台的玖月奇迹一炮而红,在大学期间,两人因喜欢音乐而结缘,并组建了玖月奇迹这个组合参加星光大道,从星光大道出名后,这两人的事业也是一路顺风顺水,并且关系人猿星球将成现实?英伟达集齐三芯召唤神龙?图灵周报图灵周报精选AI行业一周大事件,从良莠不齐的行业资讯中挑选出最有价值的信息,配上专业点评,值得你细读品味。01微软160亿美元收购AI语音公司Nuance当地时间4月12日,微软和不只有三变!TFC威震天多形态试模展示去年9月份跟兄弟们分享过一款TFC三变威震天的资讯,个人对这款产品还是非常感兴趣的,毕竟可以跟他们家滚雷擎天柱搭配。时隔近一年,这款产品终于有新动态了,今天就跟兄弟们简单的分享一下共享单车涨价?资本肆虐后的穷途末路这几天共享单车涨价成了热点,继小蓝车涨价之后,从今天(日)起,摩拜单车也在北京地区实行了新的计费规则。摩拜单车起步价调整为元分钟骑行超出分钟,每分钟收费元。看来在资本肆虐过后,共享共享单车涨价?资本肆虐后的穷途末路这几天共享单车涨价成了热点,继小蓝车涨价之后,从今天(日)起,摩拜单车也在北京地区实行了新的计费规则。摩拜单车起步价调整为元分钟骑行超出分钟,每分钟收费元。看来在资本肆虐过后,共享