Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10833
  • 博文数量: 8
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-25 14:58
文章分类
文章存档

2014年(8)

我的朋友

分类: 嵌入式

2014-10-16 10:36:19

    很多开源代码的编译都是靠自动生成的Makefile来编译安装的,下面介绍如何自动生成Makefile来编译自己的工程代码,具体步骤为:

1) 新建test目录,在目录下编辑main.c & add.c & add.h

main.c

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include "add.h"

  3. int main(int argc, char** argv)
  4. {
  5.     printf("Hello, Auto Makefile! = %d\n", add(3, 5));
  6.     return 0;
  7. }

add.c
点击(此处)折叠或打开
  1. int add(int a, int b)
  2. {
  3.     return (a + b);
  4. }

add.h
点击(此处)折叠或打开
  1. extern int add(int, int);
2) 运行autoscan,自动创建两个文件:autoscan.log和configure.scan


3) 将configure.scan 文件重命名为configure.in,并修改configure.in文件,修改后如下:

点击(此处)折叠或打开

  1. # -*- Autoconf -*-
  2. # Process this file with autoconf to produce a configure script.

  3. AC_PREREQ([2.69])
  4. # 初始化,定义软件的基本信息,包括设置包的全称,版本号以及报告BUG时需要用的邮箱地址
  5. AC_INIT(main, 1.0, sky_pengliang@163.com)    
  6. AC_CONFIG_SRCDIR([main.c])
  7. 用于生成config.h文件,以便autoheader使用
  8. AC_CONFIG_HEADERS([config.h])
  9. 添加宏AM_INIT_AUTOMAKE, 它是automake所必备的宏,也同前面一样,PACKAGE是所要产生软件套件的名称,VERSION是版本编号
  10. AM_INIT_AUTOMAKE(main,1.0)
  11. # Checks for programs.
  12. AC_PROG_CC

  13. # Checks for libraries.

  14. # Checks for header files.

  15. # Checks for typedefs, structures, and compiler characteristics.

  16. # Checks for library functions.
  17. 添加输出文件Makefile
  18. AC_OUTPUT([Makefile])

4)  运行aclocal; autoconf; autoheader;

5) 在目录下新建Makefile.am文件:
点击(此处)折叠或打开

  1. AUTOMAKE_OPTIONS=foreign
  2. bin_PROGRAMS=main
  3. main_SOURCES=main.c add.c add.h
6) 执行automake --add-missing  生成configure

7) 运行./configure生成Makefile
8) 执行make生成执行文件
以上是最简单的,所有文件都在根目录下的工程。

阅读(174) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~