【发布时间】:2011-10-29 14:08:47
【问题描述】:
如何在没有 .la 和 .a 库的情况下使用 autotools/libtool 构建和安装 .so 模块 是否也安装到 --prefix 路径中?
目前我正在使用以下 Makefile.am:
lib_LTLIBRARIES = libCurlDownloader.la
libCurlDownloader_la_SOURCES = Curl.cpp
libCurlDownloader_la_LDFLAGS = -module -avoid-version
它可以工作,但是除了libCurlDownloader.so之外它还安装了libCurlDownloader.la和libCurlDownloader.a,这是不可取的。
更新 #1
有可能使 .a 不生成,通过使用任何一个
./configure --disable-static
或
AC_ENABLE_SHARED(yes)
AC_ENABLE_STATIC(no)
在configure.ac中
但在安装 .so 时如何使 .la 不被安装到安装 --prefix 仍然是个问题。
更新 #2
可以从安装中删除 .la 文件 --prefix 使用
install-exec-hook: find $(DESTDIR)$(libdir) -type f -name \*.la -delete
【问题讨论】:
-
你有一个小错误(应该是 install-exec-hook)。
-
我认为你不能,debian 打包程序正在手动删除 deb 包中的 la 文件
-
install-exec-hook似乎是个坏主意。它会从目录中删除所有 .la 文件,而不仅仅是项目生成的文件。如果使用DESTDIR,则问题不大,否则就大错特错了。