如何使用Automake链接到共享库?

问题描述 投票:0回答:1

我的大部分开发生涯都是在IDE中度过的,目前正在尝试扩展一个使用Autoconf和Automake的开源项目C-ICAP,所以对于那些更熟悉这个工具集的人来说,这可能是一个显而易见的答案。我试图在ICAP服务中添加一个使用我们专有共享库的新服务,但无法对Makefile.am进行必要的更新,以将我们的库添加到新服务的链接操作中。

我需要创建相当于

-lmylibrary

我试过以下几种方法。

LDADD = mylibrary
LDADD = libmylibrary.so
LIBADD = mylibrary
LIBADD = libmylibrary.so

但当我 "制作 "项目时,在构建日志中没有提到 "mylibrary"。

LIBS = mylibrary

'mylibrary'出现在构建日志中,但在运行 ldd 的.so文件中没有包含'mylibrary'。

该项目被安装在Ubuntu主机上,我们的 "libmylibrary.so "被安装到了 /usr/lib.

在更新Makefile.am后,我正在运行以下一系列命令

aclocal
autoconf
automake --add-missing
./configure --with-c-icap=/usr/local/c-icap --prefix=/usr/local/c-icap
make

我缺少什么才能使新服务链接到已安装的共享库?

gcc automake icap
1个回答
2
投票

既然你想把这个加到一个 共享对象 构建,你要找的是 libfoo_la_LIBADD = -lmylibrary. LIBADD 作为一个全球性的 Makefile.am 是不支持的。

请注意,现在的链接编辑器默认情况下,如果不使用它们来满足源对象中的未定义符号,则会丢弃任何添加到链接行的库。如果你想强制链接到你的库,你就必须使用 libfoo_la_LIBADD = -Wl,--no-as-needed -lmylibrary -Wl,--as-needed但这可能会使构建工作变得相当复杂。

© www.soinside.com 2019 - 2024. All rights reserved.