Как создать общую библиотеку (.so) в скрипте automake? - PullRequest
24 голосов
/ 18 января 2012

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

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

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

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

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

Я прочитал, что automake поддерживает создание разделяемых библиотек только через libtool.Я попытался заставить мой автоматический скрипт работать следующим образом, но он никогда не создавал .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 Ответ

20 голосов
/ 18 января 2012

Если вы просто поместили 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 не обязателен, но это хорошая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...