我正在尝试使用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
那么我该怎么办呢,只需在动态版本的静态中创建一个简单的库?
答案 0 :(得分:4)
.libs
是一个特定于libtool内部实现的目录,换句话说,你不要过于考虑它。你得到一个libmemory.la
,代表你建立的所有变种(静态,共享,......)。在执行make install
时,它们都将按预期正确安装。
库使用各种方案进行版本控制,libtool必须默认为某些东西,这就是你得到libmemory.so.0.0.0的原因。