automake 使用库文件

来源:互联网 发布:linux防火墙配置命令 编辑:程序博客网 时间:2024/05/22 07:21
****************************************
automake 使用库文件
****************************************

--------------------
1. 准备素材.
--------------------
   a. mkdir hello;  //创建hello 目录
   b. cd hello; mkdir src; mkdir lib;   // 在hello 下创建src 和 lib 两个目录
   c. 在lib 目录下创建sayHello.h, sayHello.c, 在src 目录下创建main.c
      其中main.c 会调用lib目录下的sayHello 函数
   具体代码:

    ~/hello$ cat lib/s    sayHello.c  sayHello.h    ~/hello$ cat lib/sayHello.h    #ifndef _HELLO_H    #define _HELLO_H    void sayhello();    #endif    ~/hello$ cat lib/sayHello.c    #include <stdio.h>    #include "sayHello.h"    void sayhello()    {        printf("hello\n");    }    ~/hello$ cat src/main.c    #include <stdio.h>    #include "sayHello.h"    int main(int argc, char *argv[])    {        sayhello();    }

--------------------
2.
创建Makefile.am;
lib/Makefile.am;
src/Makefile.am,
内容如下:
--------------------

~/hello$ cat Makefile.amAUTOMAKE_OPTIONS=foreignSUBDIRS=lib src~/hello$ cat lib/Makefile.amAUTOMAKE_OPTIONS=foreignnoinst_LIBRARIES=libmytest.alibmytest_a_SOURCES=sayHello.h sayHello.c~/hello$ cat src/Makefile.amAUTOMAKE_OPTIONS=foreignbin_PROGRAMS=hellohello_SOURCES=main.chello_LDADD=../lib/libmytest.a#INCLUDES = -I../libCFLAGS += -I../lib

--------------------
3.
autoscan;
mv configure.scan configure.ac;
vim configure.ac.
修改为如下形式
--------------------

~/hello$ cat configure.ac#                                               -*- Autoconf -*-# Process this file with autoconf to produce a configure script.AC_PREREQ([2.69])AC_INIT([hello], [1.0], [BUG-REPORT-ADDRESS])AC_CONFIG_SRCDIR([src/main.c])#AC_CONFIG_HEADERS([config.h])AM_INIT_AUTOMAKE(hello,1.0)         # manully add# Checks for programs.AC_PROG_CCAC_PROG_RANLIB                  # manully add# Checks for libraries.# Checks for header files.# Checks for typedefs, structures, and compiler characteristics.# Checks for library functions.AC_CONFIG_FILES([Makefile                 lib/Makefile                 src/Makefile])AC_OUTPUT4. aclocal, autoconf

--------------------
5.  automake -a //生成Makefile.in
6. ./configure      //生成Makefile
7. make             // 编译。
--------------------


注意问题:
注意书写语法: AUTOMAKE_OPTIONS, SUBDIRS, SOURCES, LDADD, CFLAGS
AM_INIT_AUTOMAKE, AC_PROG_RANLIB

这是个简单的示例,注意从其它开源项目中学习,automake就可以登堂入世了.
其他像动态库链接,其它关键字等,通过学习可以得到

0 0
原创粉丝点击