https://www.cnblogs.com/jrglinux/p/6964169.html

关键是如何写Makefile.am  其他的交给 自动工具完成

添加一个 很好的博客 学习下

https://www.cnblogs.com/lixinjie/p/a-answer-about-thread-safety-in-a-interview.html

lesson 0  什么是Autotools  Automake
Autotools Cmake Scons
自动创建Makefile
大型项目很难维护makefile 或者编写Makefile
所以有了自动创建Makefile的工具 Autotools 系列的工具包 包含 Autoconf Automake Libtool
工具安装
检测系统是否已经安装 which autoconf
自动安装 apt install autoconf automake libtool
需要依赖的包 ......
手动安装 Autotools 自动创建Makefile 流程
1.生成Makefile的通用规则文件 Makefile.in
手工编写Makefile.am文件
#automake:将Makefile.am -> Makefile.in
2.生成配置脚本configure
#autoscan:生成configure.scan ——>congfigure.ac
修改 配置文件configure.ac
#aclocal:生成aclocal.m4,存放autoconf运行需要的宏
#autoheader :生成 config.h.in
#autoconf:将configure.ac ——>configure
3.通过configure生成Makefile
#./configure: Makefile.in ——> Makefile
#make ; make install 实战
运行 #autoscan
mv configure.scan configure.ac
vim configure.ac
AC_PREREQ([2.69])
AC_INIT(mp3 , 1.0, zhangkele.cc )//修改的信息 发布版本信息
AC_CONFIG_SRCDIR([hello.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE//添加进来的 AC_OUTPUT(Makefile)//添加生成什么文件 这里就叫Makefile #aclocal
#autoheader 产生 config.h.in
#autoconf 产生了 configure 继续 手动创建 Makefile.am 进行手工编写如下内容 保存
AUTOMAKE_OPTIONS = foreign
bin_PROGRAMS = mp3
mp3_SOURCES = hello.c # automake --add-missing
执行这个命令 帮助自动添加缺少的文件并且通过Makefile.am产生了Makefile.in #./configure
执行这个命令利用Makefile.in 产生了Makefile #make
执行了结束产生了 我们需要的 可执行文件 mp3 了 #make install
执行这个命令 就代表着将这个可执行文件mp3安装到系统中了
便可以直接输入执行文件名mp3 直接运行了 #make uninstall
执行这个命令就是卸载 上面安装的文件 注意要在安装的目录执行这个命令 #make clean
#make distclean
执行这两个命令就不要讲了吧 都是清理一些东西 lesson1
使用Autotools宏、变量配置flat目录的Makefile 软件目录的结构
Makefile.am语法
Configure.ac宏 目录结构
Flat
所有文件都存放在同一个目录下面
Shallow
主出现源文件存放在顶层目录中
各个模块文件放在各个子目录中
Deep
所有源文件都存放在各个子目录中 Automake的宏、变量说明 文件编译类型 说明
_PROGRAMS 表示生成目标是可执行文件
_LIBRARIES 生成目标为库文件
_LTLIBRARISE 使用LIBTOOL生成库文件
_HEADERS 头文件
_DATA 数据文件、配置文件 编译配置 说明
_SOURCES 目标依赖的源文件
_LIBADD 生成库时需要链接的其他库
_LDADD 链接需要的链接的库
_LDFLAGS 链接选项:-I /-L/-shared/-fPIC
_LIBTOOLFLAGS Libtool编译选项 路径变量 值
bindir $(prefix)/bin
libdir $(prefix)/lib
datadir $(prefix)/share
sysconfdir $(prefix)/etc
includedir $(prefix)/include
$(top_srcdir) 工程顶目录
$(top_builddir) 目标文件顶层目录
noinst 不安装 其他变量 说明
INCLUDES 链接所需要的头文件
SUBDIRS 传递处理子目录
EXTRA_DIST 打包文件或目录 Makefile.am书写示范 百度吧!!!
Makefile.am语法
主要有宏、变量组成
各个变量定义生成需要被编译 连接的目标 依赖源文件 需要安装的目录等
工具automake根据这些目标和源文件添加规则,生成makefiel.in
少量的makefile语法 注释
注释使用##表示,不会被输出到Makefile.in
在makefile.am 定义的makefile代码将被添加到makefile.in的合适位置

按照笔记来干 就可以了  很easy 不多说

makefile自动生成学习的更多相关文章

  1. Makefile自动生成头文件依赖

    前言 Makefile自动生成头文件依赖是很常用的功能,本文的目的是想尽量详细说明其中的原理和过程. Makefile模板 首先给出一个本人在小项目中常用的Makefile模板,支持自动生成头文件依赖 ...

  2. Linux Makefile自动生成--config.h

    Linux Makefile自动生成--config.h http://blog.csdn.net/spch2008/article/details/12510805

  3. C/C++ makefile自动生成工具(comake2,autotools,linux),希望能为开源做点微薄的贡献!

      序     在linux下C或C++项目开发,Makefile是必备的力气,但是发现手写很麻烦. 在百度有个comake2工具,用于自动生成Makefile工具,而在外边本想找一个同类工具,但发现 ...

  4. Makefile自动生成工具-----autotools的使用(详细)

    相信每个学习Linux的人都知道Makefile,这是一个很有用的东西,但是编写它是比较复杂,今天介绍一个它的自动生成工具,autotools的使用.很多GNULinux的的软件都是用它生成Makef ...

  5. makefile自动生成依赖关系

    手工编写依赖关系不仅工作量大而且极易出现遗漏,更新也很难及时,修改源或头文件后makefile可能忘记修改.为了解决这个问题,可以用gcc的-M选项自动生成目标文件和源文件的依赖关系.-M选项会把包含 ...

  6. Makefile 自动生成依赖

    虽然以前对Makefile有个基本概念,但是真正到自己去写一个哪怕是简单的Makefile时也会遇到不少的麻烦.    现在我有如下文件 dList.h dList.c memory.c debug. ...

  7. Makefile自动生成

    automake/autoconf入门作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile ...

  8. Makefile自动生成:cmake

    http://blog.csdn.net/pipisorry/article/details/51647073 编辑makefile文件CMakeLists.txt,使用cmake命令自动生成make ...

  9. makefile自动生成目标与依赖的关系

    有main.c: #include <stdio.h> #include "command.h" int main(int argc, const char *argv ...

随机推荐

  1. 我的 2020:出书、办签售会、发展 VS Code 中文社区、成为开源先锋、全网 10 万粉丝、10 场演讲、内推 21 人、955.WLB 发扬光大

    感觉写 2019 年终总结还是在不久之前.转眼间,2020 已经接近尾声了.是时候来写写 2020 年的年终总结了. 出书 今年最高兴的事情之一,就是出了全球首本 VS Code 中文书 -- < ...

  2. Android 安全研究 hook 神器frida学习(一)

    在进行安卓安全研究时,hook技术是不可或缺的,常用的有Xposed:Java层的HOOK框架,由于要修改Zgote进程,需要Root,体验过Xposed,整个过程还是很繁琐的,并且无法hook,na ...

  3. Windows下不同版本的JDK共存

    1.安装jdk7,将C:\Windows\System32目录下的java.exe.javaw.exe.javac.exe删除. 2.安装jdk8,将系统环境变量path中的C:\ProgramDat ...

  4. mysql性能调优注意事项

    1.最左原则  注意遇到> < like  between失效 2.对于like 查询  遇到最左%索引无效 3.SQL性能优化目标:至少要达到range(对索引进行范围查找)级别,要求是 ...

  5. 分享知乎关于pull request的分享

    作者:知乎用户链接:https://www.zhihu.com/question/21682976/answer/79489643来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  6. SAML和OAuth2这两种SSO协议的区别

    目录 简介 SAML SAML的缺点 OAuth2 OAuth2的缺点 两者的对比 CAS简介 简介 SSO是单点登录的简称,常用的SSO的协议有两种,分别是SAML和OAuth2.本文将会介绍两种协 ...

  7. vue的八个生命周期

    1.beforeCreate: 创建Vue实例之前(只有默认的一些生命周期和默认的一些事件,data和methods还没有被初始化) 2.Create: 数据已经在data方法中初始化了,计算属性,事 ...

  8. 浅谈 Checkbox Group 的双向数据绑定

    前言 不曾想在忙碌的工作面前,写一篇技术博客也成了奢求. Checkbox 作为表单中最常见的一类元素,使用方式分为单值和多值,其中单值的绑定很简单,就是 true 和 false,但是多值(Chec ...

  9. 基于Jmeter实现Rocketmq消息发送

    在互联网企业技术架构中,MQ占据了越来越重要的地位.系统解耦.异步通信.削峰填谷.数据顺序保证等场景中,到处都能看到MQ的身影. 而测试工程师在工作中,也经常需要和mq打交道,比如构造测试数据,触发某 ...

  10. 【C++】《Effective C++》第七章

    第七章 模板与泛型编程 条款41:了解隐式接口和编译期多态 面向对象设计中的类(class)考虑的是显式接口(explict interface)和运行时多态,而模板编程中的模板(template)考 ...