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 appleautoscanchenyun:autoapple 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-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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 鼻炎的人感冒了怎么办 小孩上幼儿园反复感冒怎么办 3岁宝宝感冒鼻炎怎么办 鼻炎犯了鼻子不通气怎么办 食物呛到鼻子里怎么办 胃疼引起的焦虑怎么办 泰迪犬发生口腔亏痒怎么办? 俩鼻子都堵了怎么办 2岁宝宝鼻甲肿大怎么办 感冒10多天不好怎么办 宝妈鼻炎犯了怎么办 鼻炎犯了好多黄鼻涕怎么办 空调吹多了上火怎么办 宝宝感冒鼻塞流鼻涕口臭怎么办 怀孕了有鼻息肉怎么办 孕晚期鼻炎犯了怎么办 孕妇鼻炎犯了头疼怎么办 一岁宝宝有鼻炎怎么办 蒸馒头的面酸了怎么办 dnf点券充错账号了怎么办 英雄联盟点券充错区了怎么办 文玩鼻烟壶盖子松了怎么办 文胸磨腋下的肉怎么办 荷兰在窝里拉屎怎么办 宝宝把泡沫吃了怎么办 荷兰猪一直叫该怎么办 人吃了缓冲泡沫怎么办 不小心吃了泡沫怎么办 不想养荷兰猪了怎么办 刚买的乌龟死了怎么办 剪猫指甲出血了怎么办 猫吃了酸性植物怎么办 金鱼在缸底不动怎么办 野兔子不吃不喝怎么办 让荷兰猪咬了怎么办 仓鼠的脚被棉花怎么办 仓鼠的脚变黑了怎么办 夏天小仓鼠生了怎么办 把仓鼠摔出血了怎么办 仓鼠摔成骨折了怎么办 孩子被仓鼠咬了怎么办