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 时进行测试