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. 上传报错,ITMS-90167,解决办法

    ERROR ITMS-90167 No .app bundles found in the package 报这个错误的原因是上传工具的版本问题或者本地网络问题. 解决办法是使用在线最新的上传工具,推 ...

  2. 解决 Idea 下 Lombok 无法使用

    解决:    第一步,项目导入 Lombok 依赖 <dependency> <groupId>org.projectlombok</groupId> <ar ...

  3. 阿里面试:问springBoot自动装配我这样回答的,面试官对我竖起了大拇指

    引言 最近有个读者在面试,面试中被问到了这样一个问题"看你项目中用到了springboot,你说下springboot的自动配置是怎么实现的?"这应该是一个springboot里面 ...

  4. MyBatis-Plus 多表联查+分页

    在写东西的过程中,多表联查和分页功能必不可少.当然,crud也很重要 但是又不想写代码和xml. 通过苦苦的查找.发现MyBatis-Plus一款国产的框架.优化了许多操作 本次主要记录一下,多表联查 ...

  5. C语言I博客作业1

    1 .班级链接: https://edu.cnblogs.com/campus/zswxy/SE2020-3 2 .作业要求链接: https://edu.cnblogs.com/campus/zsw ...

  6. CSS解析

    CSS(层叠样式表) CSS层叠样式表(Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言. ...

  7. IDEA本地运行Hadoop程序配置环境变量

    1.首先到github上下载hadoop-common-2.2.0-bin-master 2.解压放到自定义目录下 再将hadoop.dll文件复制到windows/System32目录下 3.配置环 ...

  8. Hadoop集群模式安装出现的若干问题

    一.域名解析问题 域名解析暂时失败问题 vim /etc/sysconfig/network 查看主机名 vim etc/hosts 配置IP地址与主机名 192.168.60.132 centos ...

  9. flume集成hdfs(hdfs开启kerberos认证)

    )当 sink 到 hdfs 时: ) 需修改 flume-env.sh 配置,增添 hdfs 依赖库: FLUME_CLASSPATH="/root/TDH-Client/hadoop/h ...

  10. hadoop集群中zkfc的作用和工作过程

    一. 简单了解NameNode的ZKFC机制 NameNode的HA可以个人认为简单分为共享editLog机制和ZKFC对NameNode状态的控制 一般导致NameNode切换的原因 ZKFC的作用 ...