linux下自动生成Makefile文件
来源:互联网 发布:网络交易平台怎么做 编辑:程序博客网 时间:2024/04/30 07:34
作为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 apple
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-ADDRESSAC_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
生成可执行文件或库。
0 0
- Linux下自动生成makefile文件
- linux下如何自动生成Makefile文件
- linux下自动生成Makefile文件
- Linux下自动生成 Makefile
- linux下makefile自动生成
- linux下自动生成Makefile
- linux下的Makefile的自动生成
- 自动生成Linux下Makefile全攻略
- 自动生成Linux下Makefile全攻略
- linux下的Makefile的自动生成
- 自动生成Linux下Makefile全攻略
- Linux下Makefile的自动生成步骤
- linux 下的makefile自动生成
- Linux下Makefile的自动生成步骤
- 自动生成makefile文件
- 自动生成Makefile文件
- 自动生成Linux下Makefile全攻略(下)
- 自动生成Linux下Makefile全攻略(下)
- javascript日期字符串和日期对象相互转换
- 点菜系统--总结
- OpenSSH中SCP协议实现相关程序
- linux常用命令—— 设备管理(十六)
- Spark源码分析:多种部署方式之间的区别与联系
- linux下自动生成Makefile文件
- 1086. Tree Traversals Again (25)
- Process Lasso Pro(进程优化工具) v8.9.3.4中文版
- Table显示滚动条
- C++学习笔记(五) 从C到C++
- 导出数据库 php
- git中文教程
- 深度学习与自然语言处理之五:从RNN到LSTM
- TCP为什么是四次挥手