• automake


    ./configure --prefix="/root/code/install/x86" CPPFLAGS="-I/root/src/include"  LDFLAGS="-L/usr/local/lib -L/root/code/x86/sqlite"

    动态链接

    AUTOMAKE_OPTIONS=foreign
    SUBDIRS=face cgi
    bin_PROGRAMS=main 
    main_SOURCES=main.cpp
    main_LDADD=face/libface.a -lopencv_video -lopencv_videostab -lrt -lpthread -lm -ldl  
    

      

    静态库

    AUTOMAKE_OPTIONS=foreign
    noinst_LIBRARIES=libface.a 
    libface_a_SOURCES=face.h face.cpp
    

      

    静态链接

    AUTOMAKE_OPTIONS=foreign
    bin_PROGRAMS=hello.cgi 
    INCLUDES= -I../include/sqlite hello_cgi_SOURCES=hello.cpp hello_cgi_LDADD= -lsqlite3 -lpthread -ldl hello_cgi_LDFLAGS=-static

      

    说明:

    文件类型书写格式
    可执行文件 bin_PROGRAMS = foo
    foo_SOURCES = xxxx.c
    foo_LDADD = libfoolib.a
    foo_LDFLAGS =
    foo_DEPENDENCIES =
    静态库 lib_LIBRARIES = libfoo.a
    foo_a_SOURCES =
    foo_a_LDADD =
    foo_a_LIBADD =
    foo_a_LDFALGS =
    头文件 include_HEADERS = foo.h
    数据文件 data_DATA = data1 data2

    如果只想编译,而不想安装到系统中,就用 noinst_LIBRARIES 代替 bin_LIBRARIES ,对于可执行文件就用 noinst_PROGRAMS 代替 bin_PROGRAMS

    还可以在Makefile.am添加编译参数AM_CPPFLAGS和AM_LDFLAGS

    比如64位linux编译32位程序可以加入下面参数:

    AM_CPPFLAGS = -m32
    AM_LDFLAGS = -m32 -melf_32

    减少无用的依赖

    main_LDFLAGS=-Wl,--as-needed

    1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。
    2.aclocal (automake):根据已经安装的宏,用户定义宏和acinclude.m4文件中的宏将configure.ac文件所需要的宏集中定义到文件 aclocal.m4中。
    aclocal是一个perl 脚本程序,它的定义是:“aclocal - create aclocal.m4 by scanning configure.ac”
     
    user input files   optional input     process          output files
    ================   ==============     =======          ============
     
                        acinclude.m4 - - - - -.
                                              V
                                          .-------,
    configure.ac ------------------------>|aclocal|
                     {user macro files} ->|       |------> aclocal.m4
                                          `-------'
    3.autoheader(autoconf): 根据configure.ac中的某些宏,比如cpp宏定义,运行m4,声称config.h.in
     
    user input files    optional input     process          output files
    ================    ==============     =======          ============
     
                        aclocal.m4 - - - - - - - .
                                                 |
                                                 V
                                         .----------,
    configure.ac ----------------------->|autoheader|----> autoconfig.h.in
                                         `----------'
    4.automake: automake将Makefile.am中定义的结构建立Makefile.in,然后configure脚本将生成的Makefile.in文件转换为Makefile。
    如果在configure.ac中定义了一些特殊的宏,比如AC_PROG_LIBTOOL,它会调用libtoolize,
    否则它会自己产生config.guess和config.sub
     
    user input files   optional input   processes          output files
    ================   ==============   =========          ============
     
                                         .--------,
                                         |        | - - -> COPYING
                                         |        | - - -> INSTALL
                                         |        |------> install-sh
                                         |        |------> missing
                                         |automake|------> mkinstalldirs
    configure.ac ----------------------->|        |
    Makefile.am  ----------------------->|        |------> Makefile.in
                                         |        |------> stamp-h.in
                                     .---+        | - - -> config.guess
                                     |   |        | - - -> config.sub
                                     |   `------+-'
                                     |          | - - - -> config.guess
                                     |libtoolize| - - - -> config.sub
                                     |          |--------> ltmain.sh
                                     |          |--------> ltconfig
                                     `----------'
    5.autoconf:将configure.ac中的宏展开,生成configure脚本。这个过程可能要用到aclocal.m4中定义的宏。
     
    user input files   optional input   processes          output files
    ================   ==============   =========          ============
     
                       aclocal.m4 - - - - - -.
                                             V
                                         .--------,
    configure.ac ----------------------->|autoconf|------> configure ----->autoconfig.h,Makefile
    

      

  • 相关阅读:
    linux centos 安装配置rsync
    linux下mysql权限配置
    让nginx支持patchinfo,(支持codeigniter,thinkphp,ZF等框架)
    nginx、php-fpm安装mongodb及驱动扩展
    redis和redis php扩展安装
    sea.js 入门
    require.js 入门笔记
    怎么玩耍图标字体.
    利用 Gulp 处理前端工作流程
    LESS 学习记录(简单入门)
  • 原文地址:https://www.cnblogs.com/ahuo/p/4126306.html
Copyright © 2020-2023  润新知