清泛IT社区App Inventor 2 中文社区

搜索

扫码访问移动社区 移动社区,您的掌上技术专家

关注我,精彩不错过! 关注我,精彩不错过!

扫码安装最新版AI伴侣 最新版AI伴侣v2.72

Aia Store .aia 源码一站式解决方案 发布日志AI2连接测试ai2Starter模拟器

开通会员送SVIPApp Inventor 2 拓展有奖征文 VIP会员享专有教程,免费赠送基础版*技术支持服务! AI2入门必读中文文档中文教程IoT专题

查看: 1248|回复: 0
打印 上一主题 下一主题

Linux automake自动编译全攻略

  • TA的每日心情
    开心
    2024-02-17 18:16
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    546

    主题

    715

    帖子

    1万

    积分

    管理员

    这里没有广告...

    Rank: 9Rank: 9Rank: 9

    积分
    10709
    QQ
    跳转到指定楼层
    楼主
    发表于 2015-09-06 10:19:24 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
    通过一个简单但经典、全面的例子教大家如何使用automake自动编译自己的工程。
    automake通常用于大型工程的自动化编译,我们只需编写Makefile.am,它的规则比直接编写Makefile简单得多(Makefile不熟悉的要好好学习一下),而且也灵活的多。使得开发者只需关心代码逻辑,不必过于关心项目的编译配置。

    automake流程图示如下:


    核心配置如下:
    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. }
    复制代码

    编译及执行结果:



    执行:


    代码点此下载: automake.zip (2.3 KB, 下载次数: 1)

    清泛网 - 专注IT技能提升
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    © 2024 tsingfun.com, Inc.  沪ICP备2020034476号-1  沪公网安备31011702000040号

    GMT+8, 2024-11-23 15:06 , Processed in 0.023357 second(s), 36 queries .