[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\n", 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

GNU自动化工具使用全过程详解,以及在线手册的更多相关文章

  1. 分区工具parted的详解及常用分区使用方法【转】

    来源:http://blog.51cto.com/zhangmingqian/1068779 分区工具parted的详解及常用分区使用方法 一.         parted的用途及说明 概括使用说明 ...

  2. 日志分析工具ELK配置详解

    日志分析工具ELK配置详解 一.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分 ...

  3. 黑苹果引导工具 Clover 配置详解及Clover Configurator使用

    黑苹果引导工具 Clover 配置详解及Clover Configurator使用  2017-03-11 14:01:40 by SemiconductorKING 转自:@三个表哥   简介: 可 ...

  4. Fiddler抓取https请求 & Fiddler抓包工具常用功能详解

    Fiddler抓取https请求 & Fiddler抓包工具常用功能详解   先来看一个小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:“你这个页面做的有问 ...

  5. 浏览器解析html全过程详解

    前端文摘:深入解析浏览器的幕后工作原理 关于浏览器解析html全过程详解 输入URL到浏览器接收返回的数据的整个过程 TCP报文格式详解 IP报文格式详解 Linux IO模式及 select.pol ...

  6. virtualbox centos安装增强工具和问题详解

    virtualbox centos安装增强工具和问题详解 VirtualBox 大家都习惯性把它简称为 Vbox ,比 VM 的体积小.开源.速 度快.不过在使用 VirtualBox 在虚拟机中安装 ...

  7. redis cluster管理工具redis-trib.rb详解

    redis cluster管理工具redis-trib.rb详解 来源 http://weizijun.cn/2016/01/08/redis%20cluster%E7%AE%A1%E7%90%86% ...

  8. Protobuf 文件生成工具 Prototool 命令详解

    Protobuf 文件生成工具 Prototool 命令详解 简介 Prototool 是 Protobuf 文件的生成工具, 目前支持go, php, java, c#, object c 五种语言 ...

  9. Apache性能测试工具ab使用详解~转载

    Apache自带性能测试工具ab使用详解 一. Apache的下载 1. http://www.apache.org/,进入Apache的官网 2. 将页面拖到最下方“Apache Project L ...

随机推荐

  1. Enhancing network controls in mandatory access control computing environments

    A Mandatory Access Control (MAC) aware firewall includes an extended rule set for MAC attributes, su ...

  2. 安装CentOS6.2操作系统

    原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong ...

  3. JAVA SE回顾及思考(3)——排序算法

    排序的算法是很多公司的笔试和面试题,个人感觉Java中其实无需使用这些排序方法,因为Java中已经为我们提供了很方便效率很高的sort()方法.但是不使用不能代表不需要学习这些算法,也不是仅仅为了面试 ...

  4. cordova通过指纹插件进行指纹验证

    原文:cordova通过指纹插件进行指纹验证 版权声明:本文为博主原创文章,转载须注明出处,博客地址:https://blog.csdn.net/wx13227855087 https://blog. ...

  5. General-Purpose Operating System Protection Profile

    1 Protection Profile Introduction   This document defines the security functionality expected to be ...

  6. sql数据库恢复神器--Log Explorer 4.2使用教程

    对于程序员来说,世界最悲催的事情是什么?——就是手贱,把数据库的数据给删掉了,更悲催的是木有任何数据库备份  感谢万能的度娘,感谢无私奉献的网友们,最感谢强大的LogExplorer工具 . 使用Lo ...

  7. 他们实际上控制的定义很easy5/12

    尊重原创转载请注明:From AigeStudio(http://blog.csdn.net/aigestudio)Power by Aige 侵权必究! 炮兵镇楼 近期龙体欠安.非常多任务都堆着,虽 ...

  8. TCP/IP之封装,分用,server模型

    ios讨论群1群:135718460 1.封装 当应用程序用TCP传送数据时,数据被送入到协议栈中,然后通过每一层直到被当做一串比特流送入网络. 2.分用 当目的主机收到以太网数据帧时,数据就開始从协 ...

  9. Java--基础命名空间和相关东西(JAVA工程师必须会,不然杀了祭天)

    java.lang (提供利用 Java 编程语言进行程序设计的基础类)java.lang.annotation(提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互)java.lang.inst ...

  10. March 29th, 2015, Thread Name is odd by increasing 1

    public class Fabric extends Thread{ public static void main(String args[]){ Thread t = new Thread(ne ...