• 使用autotools制作makefile


    flat模式

    ①#autoscan

    生成configure.scan

    ②改写configure.scan

    AC_INIT(最终可执行文件名, 版本号)

    AM_INIT_AUTOMAKE

    AC_CONFIG_SRCDIR(源文件所在文件夹中的一个文件名,用于检测路径)

    AC_CONFIG_HEADER(config.h)

    AC_OUTPUT(Makefile)

    AC_PROG_RANLIB

    改写完毕后另存为configure.in

    ③#aclocal

    ④#autoconf

    ⑤#autoheader

    ⑥编辑Makefile.am

    AUTOMAKE_OPTIONS=foreign

    bin_PROGRAMS=可执行文件名1可执行文件名2 ......可执行文件名n

    可执行文件名1_SOURCES=该可执行文件生成所必须的源文件、头文件等,以空格分开

    可执行文件名2_SOURCES=该可执行文件生成所必须的源文件、头文件等,以空格分开

    ......

    可执行文件名n_SOURCES=该可执行文件生成所必须的源文件、头文件等,以空格分开

    可执行文件名1_LDADD=-l库名

    ......

    可执行文件名n_LDADD=-l库名

    ⑦#automake --add-missing

    ⑧#./configure

    ⑨#make

    ⑩生成可执行文件,运行。

    deep模式

    以例子说明

    环境:Linux Redhat Enterprise

    文件结构:

    根目录:

    /rtcp

    子目录:

    /rtcp/src:包含server.c client.c

    /rtcp/include:包含rtcp.c rtcp.h

    目标:在根目录/rtcp下建立Makefile

    步骤:

    ①进入/rtcp

    #autoscan

    产生configure.scan

    修改该文件:

    AM_INIT_AUTOMAKE

    # Checks for programs.
    AC_PROG_CC
    AM_PROG_CC_C_O

    # Checks for libraries.
    AC_PROG_RANLIB

    AC_OUTPUT(Makefile)

    保存为configure.in

    #aclocal

    #autoconf

    #autoheader

    #gedit Makefile.am

    ③编辑Makefile.am

    AUTOMAKE_OPTIONS=subdir-objects
    bin_PROGRAMS=server client
    server_SOURCES=src/server.c include/rtcp.c include/rtcp.h
    client_SOURCES=src/client.c include/rtcp.c include/rtcp.h
    server_LDADD=-lpthread
    client_LDADD=-lpthread
    server_LDFLAGS=-L/path/to/lib/pthread/
    client_LDFLAGS=-L/path/to/lib/pthread/

    保存

    ④#automake --add-missing

    ⑤#./configure

    ⑥#make

    交流联系方式:liangxiaxu@126.com

  • 相关阅读:
    Daily Scrum 10.31
    Daily Scrum 10.30
    Daily Scrum 10.29
    Daily Scrum 10.28
    扩展设置
    安装
    james+javamail入门
    解决ZF2_PATH environment
    Apache Httpd Server 2.2升级2.4
    缓存,spring
  • 原文地址:https://www.cnblogs.com/liangxiaxu/p/2485099.html
Copyright © 2020-2023  润新知