您的位置:首页 > 其它

automake 使用库文件

2015-11-09 11:33 267 查看
****************************************

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.am
AUTOMAKE_OPTIONS=foreign
SUBDIRS=lib src

~/hello$ cat lib/Makefile.am
AUTOMAKE_OPTIONS=foreign
noinst_LIBRARIES=libmytest.a
libmytest_a_SOURCES=sayHello.h sayHello.c

~/hello$ cat src/Makefile.am
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=hello
hello_SOURCES=main.c
hello_LDADD=../lib/libmytest.a
#INCLUDES = -I../lib
CFLAGS += -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_CC
AC_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_OUTPUT

4. 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就可以登堂入世了.

其他像动态库链接,其它关键字等,通过学习可以得到
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: