zoukankan      html  css  js  c++  java
  • GNU自动化工具使用全过程详解,以及在线手册

    [root@localhost test3]# cat add.h
    #ifndef _ADD_H_
    #define _ADD_H_


    extern int add(int, int);


    #endif

    [root@localhost test3]# cat add.c
    #include "add.h"


    int add(int a, int b)
    {
            return a + b;
    }

    [root@localhost test3]# cat main.c
    #include 
    #include "add.h"

    int main()
    {
            int a, b, c;


            a = 5;
            b = 6;


            c = add(a, b);


            printf("c = %d ", c);


            return 0;
    }

    [root@localhost test3]# gcc -shared -o libadd.so add.c


    1、执行autoscan
    [root@localhost test3]# autoscan
    [root@localhost test3]# ls
    add.c  add.h  autoscan.log  configure.scan  main.c


    2、编辑configure.in
    [root@localhost test3]# mv configure.scan configure.in


    [root@localhost test3]# cat configure.in
    #                                               -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.


    AC_PREREQ([2.63])
    AC_INIT([main], [1.0], [yww680169@126.com])
    AM_INIT_AUTOMAKE(main, 1.0)
    AC_CONFIG_SRCDIR([main.c])
    AC_CONFIG_HEADERS([config.h])


    # Checks for programs.
    AC_PROG_CC


    # Checks for libraries.
    AC_CHECK_LIB(add, add)
    # Checks for header files.
    AC_CHECK_HEADERS([add.h])
    # Checks for typedefs, structures, and compiler characteristics.


    # Checks for library functions.


    AC_OUTPUT(Makefile)


    3、执行aclocal
    [root@localhost test3]# aclocal


    4、执行autoconf
    [root@localhost test3]# autoconf


    5、执行autoheader
    [root@localhost test3]# autoheader


    6、新建Makefile.am
    [root@localhost test3]# cat Makefile.am
    AUTOMAKE_OPTIONS=foreign
    bin_PROGRAMS=main
    main_SOURCES=main.c
    main_LDADD=libadd.so


    7、执行automake
    [root@localhost test3]# automake
    configure.in:6: required file `./install-sh' not found
    configure.in:6:   `automake --add-missing' can install `install-sh'
    configure.in:6: required file `./missing' not found
    configure.in:6:   `automake --add-missing' can install `missing'
    Makefile.am: required file `./depcomp' not found
    Makefile.am:   `automake --add-missing' can install `depcomp'
    [root@localhost test3]# automake --add-missing
    configure.in:6: installing `./install-sh'
    configure.in:6: installing `./missing'
    Makefile.am: installing `./depcomp'
    [root@localhost test3]# automake --add-missing


    7、执行./configure
    [root@localhost test3]# ./configure                              
    checking for a BSD-compatible install... /usr/bin/install -c     
    checking whether build environment is sane... yes                
    checking for a thread-safe mkdir -p... /bin/mkdir -p             
    checking for gawk... gawk                                        
    checking whether make sets $(MAKE)... yes                        
    checking for gcc... gcc                                          
    checking for C compiler default output file name... a.out        
    checking whether the C compiler works... yes                     
    checking whether we are cross compiling... no                    
    checking for suffix of executables...                            
    checking for suffix of object files... o                         
    checking whether we are using the GNU C compiler... yes          
    checking whether gcc accepts -g... yes                           
    checking for gcc option to accept ISO C89... none needed         
    checking for style of include used by make... GNU
    checking dependency style of gcc... gcc3
    checking for add in -ladd... no
    checking how to run the C preprocessor... gcc -E
    checking for grep that handles long lines and -e... /bin/grep
    checking for egrep... /bin/grep -E
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking add.h usability... no
    checking add.h presence... no
    checking for add.h... no
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating config.h
    config.status: executing depfiles commands


    8、make
    [root@localhost test3]# make
    make  all-am
    make[1]: Entering directory `/home/xiaowan/Desktop/test3'
    gcc -DHAVE_CONFIG_H -I.     -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.c
    mv -f .deps/main.Tpo .deps/main.Po
    gcc  -g -O2   -o main main.o libadd.so
    make[1]: Leaving directory `/home/xiaowan/Desktop/test3'


    9、make install
    [root@localhost test3]# make install
    make[1]: Entering directory `/home/xiaowan/Desktop/test3'
    test -z "/usr/local/bin" || /bin/mkdir -p "/usr/local/bin"
      /usr/bin/install -c main '/usr/local/bin'
    make[1]: Nothing to be done for `install-data-am'.
    make[1]: Leaving directory `/home/xiaowan/Desktop/test3'


    10、导出环境变量(在当前目录下执行命令需导出环境变量)
    [root@localhost test3]# export LD_LIBRARY_PATH=$PWD


    11、执行./main
    [root@localhost test3]# ./main
    c = 11

    http://blog.chinaunix.net/uid-26133817-id-4281336.html

    在线手册:

    http://www.gnu.org/software/automake/manual/automake.html#API-Versioning

  • 相关阅读:
    纯前端实现导入导出功能excel
    去除对象有undefined的值
    react组件传值
    获取当前日期的前一天
    uniapp之uni.navigateTo路由跳转传参,参数是对象
    解决uniapp代码在小程序中报错问题[ app.json 文件内容错误] app.json: app.json 未找到]
    css实现块级元素水垂直居中的方法
    JS深拷贝和浅拷贝
    VUE新增属性-数据更新页面不更新
    抄也能抄出不一样的代码,我真是个人才
  • 原文地址:https://www.cnblogs.com/findumars/p/6475758.html
Copyright © 2011-2022 走看看