Как создать общую библиотеку (.so) в automake script?

для некоторого исходного файла test.cpp Я хотел бы создать общую библиотеку libtest.so. Я пытаюсь сделать это в рамках файла automake, но я не могу заставить его работать.

Например, при g++ я делаю следующее:

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

то я могу создать другой файл, который будет зависеть от общей библиотеки следующим образом:

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

Я читал, что automake поддерживает только создание разделяемых библиотек через libtool. Я попытался заставить мой automake scriupt работать следующим образом, но он, кажется, не производит .so. Самое близкое, что я получил, - это создать файл .la и .o:

в файле configure.ac:

AC_ENABLE_SHARED
AC_DISABLE_STATIC
AC_PROG_LIBTOOL(libtool)

в 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

Может ли кто-нибудь дать мне пример построения .so на основе вышеперечисленного?

Ответ 1

Если вы просто поместите LT_INIT в configure.ac и в Makefile.am, выполните:

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

вы должны получить .so. Вы не должны указывать -FPIC для CFLAGS и т.д. -version-info спецификатор не нужен, но это хорошая идея.