概念

Makefile.am是比Makefile更高层次的规则只需要指定要生成什么目标,依赖于什么文件,和要安装到什么目录。automake会根据Makefile.am来自动生成Makefile.in 。Makefile.am里边使用的都是宏,常见的有

.PROGRAMS ;表示可执行文件

.LIBRARIES ;表示库文件

.LTLIBRARIES ;表示库文件,LT表示libtool

.HEADERS ;头文件

.DATA ;数据文件

1、编译可执行文件

#Makefile.am文件
bin_PROGRAMS = xxx
#bin_PROGRAMS 表示指定要生成的可执行应用程序文件,这表示可执行文件在安装时需要被安装到系统
#中;如果只是想编译,不想被安装到系统中,可以用noinst_PROGRAMS来代替

xxx_SOURCES = a.c b.c c.c main.c d.c xxx.c
#xxx_SOURCES表示生成可执行应用程序所用的源文件,这里注意,xxx_是由前面的bin_PROGRAMS
#指定的,如果前面是生成example,那么这里就是example_SOURCES,其它的类似标识也是一样

xxx_CPPFLAGS = -DCONFIG_DIR=\"$(sysconfdir)\" -DLIBRARY_DIR=\"$(pkglibdir)\"
#xxx_CPPFLAGS 这和Makefile文件中一样,表示C语言预处理参数,这里指定了DCONFIG_DIR,以后
#在程序中,就可以直接使用CONFIG_DIR。不要把这个和另一个CFLAGS混淆,后者表示编译器参数

xxx_LDFLAGS = -export-dynamic -lmemcached
#xxx_LDFLAGS 连接的时候所需库文件的标识,这个也就是对应一些如-l,-shared等选项

noinst_HEADERS = xxx.h
#这个表示该头文件只是参加可执行文件的编译,而不用安装到安装目录下。如果需要安装到系统中,
#可以用include_HEADERS来代替

INCLUDES = -I/usr/local/libmemcached/include/
#INCLUDES 链接时所需要的头文件
xxx_LDADD = $(top_builddir)/sx/libsession.a \
$(top_builddir)/util/libutil.a
#xxx_LDADD 链接时所需要的库文件,这里表示需要两个库文件的支持

2、编译动态库文件

要生成xxx.so文件

#Makefile.am文件
xxxlibdir=$(libdir)//新建一个目录,该目录就是lib目录,运行后xxx.so将安装在该目录下
xxxlib_PROGRAMS=xxx.so
xxx_so_SOURCES=xxx.c
xxx_so_LDFLAGS=-shared -fpic //GCC编译动态库的选项

3、编译静态库文件

要生成xxx.a

#Makefile.am文件
noinst_LTLIBRARIES = xxx.a
noinst_HEADERS = a.h b.h
xxx_a_SOURCES = a.c b.c xxx.c

最新文章

  1. svn1.6在centos6下的使用
  2. switch与ifelse的效率问题
  3. 【Visual Lisp】图元选择集专题
  4. 百度地图API示例之添加定位相关控件
  5. HL AsySocket 服务开发框架 - 业务逻辑层
  6. 错误Mybatis 元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id*,result*,association*,collection*,discriminat
  7. poj2509---抽k根烟就换一支,求能抽烟的总数
  8. 项目管理软件伙伴https://www.huobanyun.cn/
  9. 漂亮的表格样式(使用CSS样式表控制表格样式)
  10. JDK1.8源码阅读系列之三:Vector
  11. Ant-打增量包
  12. .Net Core 部署 CentOs7+Nginx
  13. python--ModuleFoundError
  14. Win10系统下在国内访问Tensorflow官网
  15. 在MyEclipse中使用spring-boot+mybatis+freemarker实现基本的增删改查
  16. Django 静态文件相关设置
  17. 两道不错的递推dp
  18. JS和AS交互
  19. nump库的简单函数介绍
  20. Alpha、伪Beta 发布后,严一格的个人感想与体会

热门文章

  1. Vijos: P1046观光旅游
  2. CRM 2013 切换显示语言
  3. TOGAF架构能力框架之架构能力建设和架构治理
  4. jQuery中的ready方法及实现按需加载css,js
  5. C# 枚举常用工具方法
  6. php 数组合并方法
  7. 【Win32API】SendInput ERROR_BUSY 错误原因
  8. ZOJ 1204 一个集合能组成多少个等式
  9. 国外大师给PHP初学者的8条建议
  10. JavaScript中的call 和apply的用途以及区别