ski*_*mon 25 c++ automake autotools shared-libraries
给出一些源文件test.cpp我想创建一个共享库libtest.so.我试图在automake文件的范围内这样做但是我似乎无法让它工作.
例如,在g ++下,我执行以下操作:
g++ -shared -fPIC test.cpp -o libtest.so
Run Code Online (Sandbox Code Playgroud)
然后我可以创建另一个依赖于共享库的文件,如下所示:
g++ mytest.cpp libtest.so -o blah
Run Code Online (Sandbox Code Playgroud)
我读过,automake只支持通过libtool创建共享库.我试图让我的automake scriupt工作如下,但它似乎永远不会产生.so.我得到的最接近的是生成.la和.o文件:
在configure.ac中:
AC_ENABLE_SHARED
AC_DISABLE_STATIC
AC_PROG_LIBTOOL(libtool)
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
有人能给我一个基于上述构建.so的例子吗?
Wil*_*ell 21
如果只是将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说明符不是必需的,但是一个好主意.