¿Cómo crear una biblioteca compartida (. so) en un script automake?


Dada alguna prueba de archivo fuente.cpp Me gustaría crear una biblioteca compartida libtest.so . Estoy tratando de hacer esto dentro del alcance de un archivo automake, sin embargo, parece que no puedo hacer que esto funcione.

Por ejemplo, en g++ hago lo siguiente:

g++ -shared -fPIC test.cpp -o libtest.so

Entonces puedo crear otro archivo que dependerá de la biblioteca compartida de la siguiente manera:

g++ mytest.cpp libtest.so -o blah

He leído que automake solo admite la creación de bibliotecas compartidas a través de libtool. He tratado de conseguir mi automake scriupt a trabajar de la siguiente manera, pero nunca parece producir un. so. Lo más cercano que he conseguido es que produzca un. la y .o archivo:

En configure.ac:

AC_ENABLE_SHARED
AC_DISABLE_STATIC
AC_PROG_LIBTOOL(libtool)

En Makefile.am

lib_LTLIBRARIES=libtest.la
libtest_la_SOURCES=test.cpp
libtest_la_CFLAGS=-fPIC
libtest_la_CPPFLAGS=-fPIC
libtest_la_CXXFLAGS=-fPIC
libtest_la_LDFLAGS= -shared -fPIC

¿Podría alguien darme un ejemplo de construcción de un .so basado en lo anterior ?

Author: skimon, 0000-00-00

1 answers

Si acaba de poner LT_INIT en configure.ac y en Makefile.am, do:

lib_LTLIBRARIES = libtest.la
libtest_la_SOURCES = test.cpp
libtest_la_LDFLAGS = -version-info 0:0:0

Debe obtener un .so. No debe especificar-cLPI a CFLAGS, etc. La-versión-info especificador no es necesario, pero es una buena idea.

 20
Author: William Pursell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-18 19:59:53