Automake и библиотеки - PullRequest
       6

Automake и библиотеки

2 голосов
/ 24 марта 2012

Я пытаюсь сгенерировать разделяемую и статическую библиотеку с помощью автоинструментов, пока у меня есть

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 dir и там такие файлы:

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 Ответ

4 голосов
/ 24 марта 2012

.libs - это каталог, специфичный для внутренней реализации libtool, иными словами, вам не стоит слишком задумываться об этом.Вы получаете libmemory.la, который представляет все варианты (статические, общие, ..), которые вы создали.Все они будут правильно установлены, как и ожидалось при выполнении make install.

. Библиотеки используют различные схемы управления версиями, и libtool должен по умолчанию использовать что-то, поэтому вы получаете libmemory.so.0.0.0.

...