清泛IT社区

标题: Linux automake自动编译全攻略 [打印本页]

作者: 清泛网    时间: 2015-09-06 10:19
标题: Linux automake自动编译全攻略
通过一个简单但经典、全面的例子教大家如何使用automake自动编译自己的工程。
automake通常用于大型工程的自动化编译,我们只需编写Makefile.am,它的规则比直接编写Makefile简单得多(Makefile不熟悉的要好好学习一下),而且也灵活的多。使得开发者只需关心代码逻辑,不必过于关心项目的编译配置。

automake流程图示如下:
(, 下载次数: 4018)

核心配置如下:
configure.in:
  1. AC_INIT([test], [1.0.0], [bugreport.test.com])

  2. #指定项目名称和版本号
  3. AM_INIT_AUTOMAKE(test, 1.0.0)

  4. #检查编译器
  5. AC_PROG_CC

  6. AC_PROG_LIBTOOL

  7. #输出Makefile文件
  8. AC_CONFIG_FILES([
  9.         Makefile
  10.     lib/Makefile
  11. ])

  12. AC_OUTPUT()
复制代码

build.sh:(脚本说明了automake执行步骤及输出
  1. #!/bin/sh

  2. # configure.in -> aclocal.m4
  3. aclocal

  4. # aclocal.m4 -> configure
  5. autoconf

  6. # avoid: required file `build/ltmain.sh' not found
  7. # --copy            copy files rather than symlinking them
  8. # --debug           enable verbose shell tracing
  9. # --force           replace existing files
  10. libtoolize --automake --copy --force

  11. # Makefile.am + configure.in -> Makefile.in
  12. automake --add-missing

  13. ./configure

  14. make
复制代码

主目录Makefile.am:
  1. AUTOMAKE_OPTIONS=foreign

  2. #子目录
  3. SUBDIRS = lib

  4. #生成的可执行文件名
  5. bin_PROGRAMS = test

  6. #该可执行文件的源文件
  7. test_SOURCES = test.c

  8. #该可执行文件依赖的库文件
  9. test_LDADD = lib/libcalc.la
复制代码

lib目录下Makefile.am:
  1. AUTOMAKE_OPTIONS=foreign

  2. #生成的库文件的文件名
  3. lib_LTLIBRARIES= libcalc.la

  4. #该库文件源 头文件
  5. noinst_HEADERS = calc.h

  6. #该库文件源文件
  7. libcalc_la_SOURCES = calc.c
复制代码

代码如下:
lib目录下头文件calc.h:
  1. #include <stdio.h>

  2. int add(int a, int b);
复制代码
lib目录函数实现calc.c:
  1. #include "calc.h"

  2. int add(int a, int b)
  3. {
  4.         return a + b;
  5. }
复制代码

主目录下测试代码test.c:
  1. #include <stdio.h>
  2. #include "lib/calc.h"

  3. int main(int argc, char** argv)
  4. {
  5.         int sum = add(1, 2);
  6.         printf("sum:%d\n", sum);
  7.         
  8.         return 0;
  9. }
复制代码

编译及执行结果:
(, 下载次数: 3989)
(, 下载次数: 4011)
(, 下载次数: 4017)
执行:
(, 下载次数: 4079)

代码点此下载: (, 下载次数: 1)






欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/) Powered by Discuz! X3.3