linux下自动生成Makefile文件
2016-01-26 11:25
232 查看
作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了。 在本文中,将给大家介绍如何使用 autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常`这里写代码片` 见的GNU程序一样,只要使用“./configure”,“make”,“make install”就可以把程序安装到Linux系统中去了。这将特别适合想做开放源代码软件的程序开发人员,又或如果你只是自己写些小的Toy程序,那么 这个文章对你也会有很大的帮助。
1、创建一个main.c
#include <stdio.h> int main(int argc, char** argv) { printf("hello auto makefile\n"); return 0; }
2、执行命令
chenyun:auto appleautoscanchenyun:autoapple autoscan
chenyun:auto apple ls
autoscan.log configure.scan main.c
3、修改configure.scan文件并改名为configure.ac
原文件内容:
# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.61) #FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS) AC_CONFIG_SRCDIR([main.c]) AC_CONFIG_HEADER([config.h]) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_OUTPUT
修改后:
# -*- Autoconf -*- #确保使用的是足够新的Autoconf版本。如果用于创建configure的Autoconf的版 # 本比version 要早,就在标准错误输出打印一条错误消息并不会创建configure。 # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) # 初始化,定义软件的基本信息,包括设置包的全称,版本号以及报告BUG时需要用的邮箱地址 AC_INIT(cody, 1.0, 115980248@qq.com) # 用来侦测所指定的源码文件是否存在,来确定源码目录的有效性 AC_CONFIG_SRCDIR([main.c]) # 用于生成config.h文件,以便autoheader使用 AC_CONFIG_HEADERS([config.h]) AC_INIT_AUTOMAKE(cody,1.0) #增加支持automake # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. # 创建输出文件。在`configure.in'的末尾调用本宏一次。 AC_OUTPUT([Makefile])
4、运行 aclocal, 生成一个“aclocal.m4”文件和一个缓冲文件夹autom4te.cache,该文件主要处理本地的 宏定义
5、运行 autoconf, 目的是生成 configure
6、运行 autoheader,它负责生成config.h.in文件。该工具通常会从“acconfig.h”文件中复制用户附加的符号定义,因此此处没有附加符号定义,所以不需要创建“acconfig.h”文件
7、下面即将运行 automake, 但在此之前应该做一下准备工作!
创建Makefile.am文件
AUTOMAKE_OPTIONS=foreign #automake提供了三种软件等级:foreign、gnu和gnits,让用 户选择采用,默认等级为gnu。在本例使用foreign等级,它只检测必须的文件。 bin_PROGRAMS=main #name名字随便取 bin_PROGRAMS=[name] 但是这里的名字要与后面[name]_SOURCE 里的一致 main_SOURCES=main.c #可以添加多个源码文件 xx.c xx.h .....
8、automake –add-missing 生成configure
9、运行configure,在这一步中,通过运行自动配置设置文件configure,把Makefile.in变成了最终的Makefile。
10、make
生成可执行文件或库。
相关文章推荐
- Linux运维-zabbix_agent最新版的yum安装
- centos6安装新宋体
- linux下SOCKET在connect时遇到Operation now in progress
- linux常用命令—— 备份压缩(十五)
- (转)Linux sort命令
- Linux下用gzip和unzip命令来压缩和解压文件的用法
- MQTT在Linux下的体验
- Linux学习笔记:read-only参数
- linux php安装
- Linux服务器时间同步
- linux环境变量的设置
- i.mx27 linux 环境搭建 ubuntu 10.04
- centos 增加扩展源EPEL
- Linux INotif机制
- How to read/write files within a Linux kernel module?
- XP用户:消除误解,大胆拥抱Linux
- linux 相关学习资源
- windows下上传文件到VWware的centos
- CentOS更换yum mirror
- linux中select()函数分析