Automake和库

时间:2012-03-24 12:41:56

标签: autoconf automake

我正在尝试使用autotools生成共享和静态库,到目前为止我已经

configure.ac:

  # Process this file with autoconf to produce a configure script.

  AC_PREREQ([2.68])
  AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
  AM_INIT_AUTOMAKE(memory,1.0.0)
  #AC_CONFIG_SRCDIR([include/memory.h])
  #AC_CONFIG_HEADERS([config.h])

  # Checks for programs.
  AC_PROG_CC

  AM_PROG_CC_C_O
  AC_PROG_RANLIB
  AC_PROG_LIBTOOL


  # Checks for libraries.

  # Checks for header files.
  AC_CHECK_HEADERS([stdlib.h])

  # Checks for typedefs, structures, and compiler characteristics.

  # Checks for library functions.
  AC_FUNC_MALLOC

  AC_CONFIG_FILES([Makefile])
  AC_OUTPUT

makefile.am在我的主目录中:

lib_LTLIBRARIES = libmemory.la
libmemory_la_SOURCES = src/memory.c
libmemory_la_CFLAGS = -I./include

我希望他在这个目录中创建两个文件,.a和.so,但是他创建了./libs目录并且有这样的文件:

libmemory.a
libmemory.la -> ../libmemory.la
libmemory.lai
ibmemory_la-memory.o
libmemory.so -> libmemory.so.0.0.0
libmemory.so.0 -> libmemory.so.0.0.0
libmemory.so.0.0.0

那么我该怎么办呢,只需在动态版本的静态中创建一个简单的库?

1 个答案:

答案 0 :(得分:4)

.libs是一个特定于libtool内部实现的目录,换句话说,你不要过于考虑它。你得到一个libmemory.la,代表你建立的所有变种(静态,共享,......)。在执行make install时,它们都将按预期正确安装。

库使用各种方案进行版本控制,libtool必须默认为某些东西,这就是你得到libmemory.so.0.0.0的原因。