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. spring整合sharding-jdbc实现分库分表

    1.创建两个库,每个库创建两个分表t_order_1,t_order_2 DROP TABLE IF EXISTS `t_order_1`; CREATE TABLE `t_order_1` ( `i ...

  2. CentOS7 实战部署tomcat网站服务器

    简介:实战演练tomcat网站服务器的搭建 Tomcat:是一个开源免费的Web应用服务器,性能稳定,是目前比较流行的Web应用服务器   tomcat官网下载: https://tomcat.apa ...

  3. 阿里巴巴java开发手册-泰山版 下载

    最近,阿里的<Java开发手册>又更新了,这个版本历经一年的修炼,取名:<Java开发手册(泰山版)>正式出道.正所谓无规矩不成方圆,在程序员的世界里,也存在很多规范,阿里出版 ...

  4. [leetcode]53Maximum Subarray动态规划经典题目:最大子串问题

    /** * Find the contiguous subarray within an array (containing at least one number) * which has the ...

  5. Qt学习笔记-设计简易的截图工具软件

    现在利用Qt来实现一个截图软件. 首先,设计一个界面出来. 最上面有一个label用来显示图片. 然后使用QPixmap中的静态函数grabWindow来获取图片.这里需要一个winID.可以使用 Q ...

  6. 30天自制操作系统-day2

    30天自制操作系统(linux)-day2 使用简单的汇编语言 首先Centos环境安装nasm,使用vim工具编辑一个os.asm文件,文件内容如下: DB 0xeb, 0x4e, 0x90, 0x ...

  7. Vue利用v-for渲染时表单信息出不来

    今天在写项目时,Controller的值已经传入到html,但是利用vue进行渲染的时候就是出不来, 原因如下: 注意,in 之前的空格.

  8. (转) MySQL常用Json函数

    原文:http://www.cnblogs.com/waterystone/p/5626098.html 官方文档:JSON Functions Name Description JSON_APPEN ...

  9. 五、Zookeeper、Hbase集群搭建

    一.前提 1.安装JDK 2.安装Hadoop 3.安装zoookeeper 1.加入zookeeper包,并解压tar -zxvf zookeeper-3.4.9.tar.gz 2.去/etc/pr ...

  10. flume将数据写入各个组件

    一.flume集成hdfs,将数据写入到hdfs           a1.sources = r1           a1.sinks = k1           a1.channels = c ...