【发布时间】:2011-10-06 18:02:58
【问题描述】:
我对 autotools 很陌生,看来我的 libtool 有问题 - 它不会构建共享库而是创建一个静态库...
这就是我的 configure.ac 的样子:
AC_PREREQ([2.67])
AC_INIT([helloworld], [1.0], [...])
AM_INIT_AUTOMAKE([foreign])
LT_INIT
# Checks for programs.
AC_PROG_CXX
AC_PROG_LIBTOOL
# Checks for header files.
AC_CHECK_HEADERS([alloca.h inttypes.h stdint.h])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
和 Makefile.am:
noinst_LTLIBRARIES=helloworld.la
helloworld_la_CXXFLAGS=-w -DLINUX ...
helloworld_la_LDFLAGS=-avoid-version -module -shared -export-dynamic
# List of source files
helloworld_la_SOURCES=helloworld.cpp ...
这里有什么问题吗?
感谢您的帮助。
【问题讨论】:
-
可能与你的问题无关,但是LT_INIT是AC_PROG_LIBTOOL的替代品,所以你可以从configure.ac中删除AC_PROG_LIBTOOL
-
你为什么要建立一个共享的便利库?您是否打算使用 noinst_LTLIBRARIES 而不是 lib_LTLIBRARIES?
-
-DLINUX 有几个问题。 1) 它属于 helloworld_la_CPPFLAGS,因为它是用于预处理器的。 2)您不应该将编译基于平台,而应基于特定功能。 3) 如果忽略规则 2,则应在配置时确定平台,而不是将其硬编码到 Makefile.am 中。
标签: shared-libraries autotools