2012-01-18 2 views
23

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

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

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 на основе вышеизложенного?

+0

Вы должны заменить AC_PROG_LIBTOOL на LT_INIT –

+1

... после написания этого я понял, что вышеописанное фактически создало файл .so в скрытой .libs-директории моего исходного каталога. Надеюсь, это поможет кому-то еще, кто задается вопросом об этом. – skimon

+2

Может ли кто-нибудь опубликовать полные примеры файлов здесь? Не исходные файлы, а configure.ac и Makefile.am. Я не могу сделать эту работу, используя информацию в этой теме. –

ответ

19

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

+0

Если это испытание и не должно быть установлено, разве это не 'check_LTLIBRARIES'? –

+0

@Jack check_LTLIBRARIES не будет строить .so! Я думаю, что «тест» в вопросе не относится к тому же типу тестов, что и префикс check_. –

Смежные вопросы