Automake:如何在不安装的情况下构建共享库

Posted

技术标签:

【中文标题】Automake:如何在不安装的情况下构建共享库【英文标题】:Automake: how to build shared library without installing it 【发布时间】:2017-01-18 23:39:43 【问题描述】:

使用 Automake,您可以像这样构建共享库 (.so):

lib_LTLIBRARIES = libyeah.la
libyeah_la_SOURCES = yeah.c

然后将libyeah.so 安装到$(libdir)make install

当您指定 noinst_ 前缀(而不是 lib_)以避免安装库时,它不会构建为共享对象(仅存档,.a)。该库似乎从未真正链接

我需要一个共享对象,无需安装,用于项目测试(由测试程序动态加载的测试插件)。

我尝试将-module-shared 添加到libyeah_la_LDFLAGS,但没有成功。

【问题讨论】:

Automake: building shared module which is not to be installed的可能重复 【参考方案1】:

您可以绕过默认的libdir 并将其安装在其他目录而不是/usr/local/lib

make DESTDIR=/home/user/staging install

将在/home/user/staging/usr/local/lib 中安装您的库(如果您在configure 时间使用默认的--prefix)。然后(在 Linux 上——你没有指定你的底层平台是什么)你可以:

LD_LIBRARY_PATH=/home/user/staging/usr/local/lib test_libyeah

运行您的测试。

【讨论】:

我可能有点毛骨悚然,但问题是“如何在不安装共享库的情况下构建共享库”。大概是make install 没有安装它。您的回答显示了如何在其他地方安装它,这是一个不同的问题。

以上是关于Automake:如何在不安装的情况下构建共享库的主要内容,如果未能解决你的问题,请参考以下文章

在构建期间覆盖使用 automake/libtool 构建的共享库中的安装路径,以便在无法使用 DYLD_LIBRARY_PATH 时进行测试

如何在不安装 IDE 的情况下在构建服务器上安装 VS2017 版本的 msbuild?

Automake/libtool 不构建共享库

Maven - 在不构建的情况下安装项目依赖项

如何在不联网的情况下安装 Python 包

在不构建子模块的情况下安装父 POM