如何使用autotools创建共享库

时间:2015-09-28 18:22:49

标签: shared-libraries static-libraries autotools

我已经创建了一个基于autotools的包,可以生成libxxx.a静态库。更改configure.acMakefile.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的值遗漏为与此讨论无关(而且相当长)。

0 个答案:

没有答案