如何在automake脚本中创建共享库(.so)?

时间:2012-01-18 19:49:35

标签: c++ shared-libraries autotools automake

给出一些源文件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)
中的

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 个答案:

答案 0 :(得分:20)

如果您只是将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 说明符不是必需的,但是一个好主意。

相关问题