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. $emit的用法

    自定义事件$emit.使用$emit建立父子组件之间的通信.子组件到父组件之间的通信. 子组件: 父组件:

  2. 【原创】Linux PCI驱动框架分析(二)

    背 景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本 ...

  3. 有关em的个人理解

    个人的感觉关键就是在那个font-size,  对于一开始没有设置font-size的可以默认那就是16px  后面的所有的基础都应该是在前面距离他最近的那个font-size的大小作为1em进行设置 ...

  4. Mysql Cluster7.5.6 windows10 部署安装

    部署方法网上很多,以下是我的实践过程,供大家参考. 1. 硬件:3台虚拟机,全是windows 10 x64 2. 网络架构: 管理节点:192.168.37.128 数据节点 / SQL节点: 19 ...

  5. sh -s用法

    1.基本用法 (1)sh -s 会从标准输入中读取命令,并在子shell中执行 (2)sh -s 后从第一个非 - 开头的参数开始,依次被赋值给子shell的 $1,$2... (3)sh -s 的第 ...

  6. Android-SDK接入-YSDK(应用宝1.7.0)

    SDK接入-YSDK(应用宝1.7.0)-2021-01-07 大家好,近期在多渠道打包平台,会定期遇到第三方SDK升级,所以很被动的是,我们也要跟随他们的步伐,及时升级.否则将面临第三方开发者站无法 ...

  7. 最开始的总结——JAVA

    <最开始的总结> 回答自己几个问题:为什么去学它?学它有什么用?怎样去学它?自己目前目标是什么?估计自己会花多长时间去学习这些? 一.为什么学习Java,它有什么用? 答:我看中的是Jav ...

  8. 杭电OJ2039——三角形(c++)(易错题:数据类型不确定)

    三角形 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  9. String--常见面试题

    String s = new String("xyz") 创建了几个对象? 实例分析1 javac编译代码,然后用javap来反编译,执行javap -c Test 从结果来看,l ...

  10. 使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网)

    使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网) 一,前期准备 1,Java IDE(Eclipse)与JDK的安装与配置jdk-15.0.1-免配置路径版提取码:earu免安装版 ...