AutoMake使用小结

用autoconf和automake自动生成Makefile 用autoconf和automake自动生成Makefile 本文是以下面的目录结构阐述Makefile生成及其中遇到的问题,并讲述解决问题的方法 阅读详情

现在google Makefile 和 automake就能找到一些文章。以一个Hello 程序描述为一个project生成Makefile的过程。 这个例子其实在 Info automake 里能看到。大家把它翻成中文的,不错。 但实际上按照这个例子来做的话,步骤都对,就是太简单,一些常用的设置需要写进去,但是没有提到,还是要自己info , google ,try . 下面是我对Automake一个小总结。

1 步骤总述

 (1) autoscan 生成configure.scan .

 (2) 在configure.scan基础上手动编辑,主要要添加的 : AM_INIT_AUTOMAKE(myprojectname , version) AC_OUTPUT( 最后要生成的Makefile , 包括 子目录中的,中间用空格隔开) , 例如 AC_OUTPUT(Makefile subdir/Makefile subdir1/Makefile) AC_PROG_RANLIB (意义见第四条末尾)

 (3) aclocal autoconf 生成configure脚本。

 (4) 这步我基本靠手,呵呵,有没有脚本来完成这个的?就是在每个最后需要生成Makefile的目录中,写一个Makefile.am . 最上层的要写明 AUTOMAKE_OPTIONS = foreign 如果这个目录没有要编译的文件 ,只包含了子目录,则只写个 SUBDIRS = dir1 就ok了。 例如我的工程,最上层只是包含了源码目录,于是就写了

AUTOMAKE_OPTIONS=foreign
SUBDIRS=src
如果有文件要编译,则要指明target 先。比如我的src目录底下既有文件,又有目录,而src的这层目录中的文件最后是要编译成一个 可执行文件,则src目录下的Makefile.am这么写。
bin_PROGRAMS= myprogram
SUBDIRS= sub1
myprogram_SOURCES= / a.cpp/
    b.cpp/
# 要编译的源文件。这儿的_SOURCES是关键字
EXTRA_DIST= / a.h /
                b.h
# 不用编成.o,但生成target myprogram也需要给编译器处理的头文件放这里
myprogram_LDADD = libsub1.a 这个_LDADD是关键字,
# 最后生成myprogram这个执行文件,还要link src/sub1这个目录中的内容编成的一个lib :libsub1.a, myprogram_LDFLAGS = -lpthread -lglib-2.0 -L/usr/bin $(all_libraries)
# myprogram还要link系统中的动态so,以此类推,需要连自编译的so,也写到这个关键字 _LDFLAGS后面就好了。
AM_CXXFLAGS = -D_LINUX
# 传递给g++编译器的一些编译宏定义,选项,
INCLUDES=-IPassport -Isub1/ -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include $(all_includes)

# 传递给编译器的头文件路径。

下面是sub1种生成lib的Makefile.am
noinst_LIBRARIES = libprotocol.a # 不是生成可执行文件,而是静态库,target用noinst_LIBRARIES libprotocol_a_SOURCES = /
         alib.cpp
EXTRA_DIST = mylib.h/ alib.h
INCLUDES= -I../ $(all_includes)
AM_CXXFLAGS = -D_LINUX -DONLY_EPOLL -D_SERVER

ok ,最后补上AC_PROG_RANLIB涵义,如果要自己生成lib,然后link到最终的可执行文件中,则要加上这个宏,否则不用。 

2. 剩下的就是 automake --add-missing Ok , Makefile.in应该放到各个目录下了。

linux使用---automake学习(从原理到实践,一步步完成automake) 生成configure过程中各文件之间的关系图 详细介绍 autoscan: 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。 aclocal:根据已经安装的宏,用户定义宏和acinclude.m4文件中的宏将configure.ac文件所需要的宏集中定义到文件 aclocal.m4中。aclocal是一个perl 脚本程序,它的定义是:“aclocal - create aclocal.m4 by s 阅读详情

相关推荐

Gromacs GPU加速版安装全攻略:从依赖配置到性能优化

本文提供了Gromacs GPU加速版的完整安装与性能优化指南。详细介绍了从编译器、OpenMPI、FFTW到CUDA等关键依赖的配置,手把手指导编译支持CUDA的Gromacs,并深入解析了如何通过调整.mdp参数及平衡MPI与OpenMP线程分配,最大化GPU利用率,从而让分子动力学模拟效率获得数十倍提升。

y9z0a1b的博客 1150

automake使用详解

1.生成动态库。 1)先写configure.in,用autoscan命令生成configure.scan,然后将其重命名为configure.in,并修改其中内容如下:      #                                               -*- Autoconf -*- # Process this file with autoconf to prod

小饼仙子的专栏 1390

使用Wireshark抓取用户在网站的登陆密码

(POST请求是浏览器向服务器提交数据的方式,我们的用户名和密码就是这样提交出去的),单击点开,发现我们的账号和密码,就被抓取到了,在。(注意哦,要去掉http和/,比如http://www.4399.com/,我们只需要记下4399.com即可)(这句话是筛选数据,就是只显示IP为我们要抓取网站的数据) ,点击右边的蓝色箭头。这就是Wireshark简单的抓取登录密码的教程,只适用于http协议的网站。”打开,是这个样子,上面的数据先不用管,我们先点击左上角红色的方块停止抓包。,然后回车,得到的IP为。

泡泡的博客 1万+

automake使用

参考:https://www.ibm.com/developerworks/cn/linux/l-makefile/ 命令顺序 autoscan; aclocal; autoconf; (autoheader); automake; ./configure --host=arm-linux; make; make dist:打包,打包的命为 test2-1.0.tar.gz,保护packge名字和...

V__KING__的专栏 809

RTX 5090配Ubuntu 24.04踩坑记:手把手搞定OpenVLA-OFT环境(附版本避坑清单)

本文详细记录了在RTX 5090显卡和Ubuntu 24.04系统上部署OpenVLA-OFT环境的完整过程,包括驱动安装、CUDA配置、PyTorch版本选择等关键步骤。提供了经过验证的版本组合清单和常见错误解决方案,帮助开发者高效搭建AI开发环境。

weixin_30342209的博客 465

破解拼多多网页字体加密的Python实现(静态)

爬取或者复制粘贴出来发现数字不是6372,而是这样的一个东西 ""从上图我们可以看出数字是一行的空白,后面被浏览器渲染后才展现的数字。我们可以用这个代码查看十六位进制对应的十进制,为什么要看十进制呢?​,而字体文件中的字符映射关系(cmap)也是以十进制存储的。我们搜索这个属性我们可以看到第一个这样的属性有一个URL,这个就是解密的字体包。然后我们构造一个这样的映射字典 key就是对应的十进制,后面的值就是对应的数字。然后我们需要封装一个函数,将加密文字和映射字典传入,返回解密后的数字。

weixin_64179111的博客 3539

【Linux】【编译】automake 调试方法小结

- 由 automake 生成的规则和依赖树可能会相当复杂,当事情未按预期运行时,会让开发者感到困惑。除了 make 命令提供的调试选项(请参阅《GNU Make 手册》中的 “选项总结” 部分)之外,这里还有一些关于有效调试由 automake 生成的 makefile 的进一步提示。

一介草民,只为生活。 1001

【C++】C++异常语法、使用、规范、异常安全及异常的优缺点

实际中我们可以可以去继承exception类实现自己的异常类。但是实际中很多公司像上面一样自己定义一套异常继承体系。因为C++标准库设计的不够好用。如果有一个块抛出一个异常,捕获异常的方法会使用 try 和 catch 关键字。try 块中放置可能抛出异常的代码,try 块中的代码被称为保护代码。C++ 提供了一系列标准的异常,定义在 中,我们可以在程序中使用这些标准的异常。异常是一种处理错误的方式,

weixin_51692487的博客 1524

automake应用小结

文章目录Configure、Makefile.am、Makefile.in、Makefile文件关系autoscan(autoconf)aclocal(automake)autoheader(autoconf)automakeautoconfautomake操作流程configure.in内容修改 Configure、Makefile.am、Makefile.in、Makefile文件关系 au...

qq_24601427的博客 432

跟着团子学SAP CO:揭秘结果分析码在项目结算中的实战应用(一)KKA2/CJ88

本文深入解析了SAP CO模块中结果分析码在项目结算中的核心作用。以KKA2(方法10)和事务代码CJ88为例,详细阐述了如何在项目完工后一次性确认收入的场景下,通过结果分析功能实现收入与成本的精准匹配,将项目成本暂估为在制品,确保各期利润的准确反映。

gamma的博客 685

MAC-电脑中的user文件夹在哪?

MAC-电脑中的user文件夹在哪?

兴趣是最好的老师 1万+

automake和autoconf学习小结

从网上下载的许多源码的编译和安装过程非常简单,压缩后需要的操作只有三步: ./configure make make install 即我们只要运行./configure,这个脚本就能检测当前系统的一些特性;运行make,则会读取Makefile的一些配置,对源码进行编译。这种软件编译和安装的框架其实是有一套标准的,即GNU项目提出的GNU build system。GNU Build

棉拖先生太固执 1450

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

编译小结(6)认识Automake

我前面说了很多如何用gcc或 Makefile怎么编译的东东,但在Linux下装过软件的都应当见过,很多源码安装的包是用Automake 来编译的。输入下"./configure","make","make install"就装上了。Automake就是有群人觉得写Makfile不方便,特别是工程文件多 目录复杂时。所以就搞了这么个自动生成Makefile的开源的东东。类似的工具还有cmake

拙言的专栏 4445

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

automake生成静态库文件_编译小结(7)Automake编译静态库与动态库

具体记录下,如何用Automake编译静态库(.a)与动态库(.so)的流程.步骤其实都是一样的,只有configure.in 与 Makefile.am 有区别。一。静态库(.a)configure.in :# -*- Autoconf -*-# Process this file with autoconf to produce a configure script.AC_PREREQ([2....

weixin_36299242的博客 289

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

编译小结(7)Automake编译静态库与动态库

具体记录下,如何用Automake编译静态库(.a)与动态库(.so)的流程.   步骤其实都是一样的,只有configure.in 与 Makefile.am 有区别。 一。静态库(.a)         configure.in :    # -*- Autoconf -*- # Process this file with autoconf to produce a c

拙言的专栏 2932

automake生成静态库文件_编译小结(7)Automake编译静态库与动态库 | 学步园

具体记录下,如何用Automake编译静态库(.a)与动态库(.so)的流程.步骤其实都是一样的,只有configure.in 与 Makefile.am 有区别。一。静态库(.a)configure.in :# -*- Autoconf -*-# Process this file with autoconf to produce a configure script.AC_PREREQ([2....

weixin_39620279的博客 226

Ubuntu下automake工具的使用

刚看了automake工具的使用 ,还挺不错 ,在源文件较多时,自己动手写makefile确实显得不太好,不过makefile规则还是要会的 。下面总结一下自己的学习体会 ,以免将来忘了,可以拿来看看,希望大家赐教,本人水平也不咋地(《===》), 就以最简单的程序hello word为例子 ,即有hello.c hello.h两个文件。 1,首先是安装automake工具,用apt-get

Rain Diao的博客 6389

autoMake工具使用

1、ac文件总是以AC_INIT开头,以AC_OUTPUT结尾。# 2、AC_INIT()中分别的是: 软件包的名字,版本,作者的联系方式(一般是Email)# 3、添加一行AM_INIT_AUTOMAKE(),里面填入: 程序名字,版本号。# 4、AC_CONFIG_SRCDIR宏用来侦测所指定的源码文件是否存在,来确定源码目录的有效性。# 5、AC_CONFIG_HEADER宏用于生成config.h文件,以便autoheader使用。

m0_71782480的博客 743

Autoconf和Automake使用

你还可以试着使用一些其他的make命令,如make clean,make install,make dist,看看它们会给你什么样的效果。configure是一个脚本,它能设置源程序来适应各种不同的操作系统平台,并且根据不同的系统来产生合适的Makefile,从而可以使你的源代码能在不同的操作系统平台上被编译出来。用automake产生出来的Makefile.in文件是符合GNU Makefile惯例的,接下来我们只要执行configure这个shell 脚本就可以产生合适的 Makefile 文件了。

moran的博客 1707

autoconf与automake使用简解

文章目录总结1. 安装automake,创建hello.c文件2. 使用autoscan自动检查hello.c编译所需的文件等3. 执行aclocal,生成aclocal.m4 配置文件4. 执行autoconf,生成configure文件5. 执行autoheader,生成config.h.in6. 创建Makefile.am文件,写入相关内容7. 根据实际情况创建常用文档文件8. 执行automake,生成Makefile.in9. 执行./configure生成最终的Makefile10. 运行mak

熹微橙光的博客 1357

automake简介

在 Unix 上写过程序的人尤其是用 C 来开发程序的人一般都遇到过 Makefile,用 make 来开发和编译程序的确很方便,可是要写出一个 Makefile 就不那么简单了。GNU Make 那份几百页的文件, 让许多人害怕。 当然, 现在关于 make 的文档比较多,不过写一个 Makefile 总是一件很烦人的事情,GNU Autoconf 及 Automake 这两个软件就是帮

fangjian1204的专栏 4830

安装automake问题解决

安装automake问题解决遇到问题问题原因问题分析解决办法检测 遇到问题 Can't locate Automake/Config.pm in @INC(@INC contains: /usr/local/share/automake-1.14 /xxxxx) 问题原因 automake的安装位置和这里@INC设置的位置不一致,导致找不到Automake::Config.pm 问题分析 这个@...

星星有所不知 8685

使用automake编译程序

使用autoconf、automake编译符合自由软件管理的程序

linzx0403的专栏 873

AutoMake教程

AutoMake 使用教程

shao5166233的博客 1320
上一篇: 为GD图像处理库增加了BMP读功能以及封装了一个小的Jni程序
下一篇: AJAX 另一种在html中include一个文件的方法
oeichenwei
博客等级 码龄23年 8粉丝 42原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值