我已经创建了一个基于autotools的包,可以生成libxxx.a
静态库。更改configure.ac
和Makefile.am
文件以创建libxxx.so
共享库的正确方法是什么?
我确实按照以下说明进行了尝试:
How to create a shared library (.so) in an automake script?
我在LT_INIT
的末尾添加了configure.ac
,并在libtest_a
libtest_la
的引用替换为src/Makefile.am
然后我跑了:
$ libtoolize && aclocal && autoconf && automake --add-missing && ./configure && make
给我一个:
/ bin / bash: - mode = compile:command not found
错误消息。似乎正在发生的事情是构建系统忘记使用编译器。
这些是原始configure.ac
AC_INIT([libtest], [1.0])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
CXXFLAGS="$CXXFLAGS -std=c++0x"
AC_PROG_CXX
AM_PROG_AR
AC_PROG_RANLIB
AC_CONFIG_FILES([Makefile])
AC_OUTPUT([src/Makefile])
和src/Makefile.am
个文件
AM_CPPFLAGS=-I../include
lib_LIBRARIES = libtest.a
libtest_a = -version-info 0:0:0
libtest_a_SOURCES = \
以下是更新版本
AC_INIT([libtest], [1.0])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
CXXFLAGS="$CXXFLAGS -std=c++0x"
AC_PROG_CXX
AM_PROG_AR
AC_PROG_RANLIB
AC_CONFIG_FILES([Makefile])
AC_OUTPUT([src/Makefile])
LT_INIT
和
AM_CPPFLAGS=-I../include
lib_LTLIBRARIES = libtest.la
libtest_la = -version-info 0:0:0
libtest_la_SOURCES = \
分别
您会注意到LT_INIT
中添加的configure.ac
以及libtest.la
而不是libtest.a
的引用,以及对lib_LTLIBRARIES
的更改src/Makefile.am
在这两种情况下,我都将分配给..._SOURCES
的值遗漏为与此讨论无关(而且相当长)。