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

Gcc 如何使用Automake链接到共享库,gcc,automake,icap,Gcc,Automake,Icap,在IDE中度过了我大部分的开发生涯后,我目前正在尝试扩展一个使用Autoconf和Automake的开源项目C-ICAP,因此对于那些更熟悉此工具集的人来说,这可能是一个显而易见的答案。我正在尝试向ICAP服务添加一个新服务,该服务使用我们专有的共享库,但无法对Makefile.am进行必要的更新,以将我们的库添加到新服务的链接操作中 我需要创建等效的 -lmylibrary 我试过以下方法 LDADD = mylibrary LDADD = libmylibrary.so LIBADD =

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

我需要创建等效的

-lmylibrary
我试过以下方法

LDADD = mylibrary
LDADD = libmylibrary.so
LIBADD = mylibrary
LIBADD = libmylibrary.so
但是当我“创建”这个项目时,在构建日志中没有提到“mylibrary”。 当我试着

LIBS = mylibrary
“mylibrary”出现在生成日志中,但在生成日志上运行
ldd
。因此文件不包括“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

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

因为您试图将其添加到共享对象构建中,所以您要查找的是
libfoo\u la\u LIBADD=-lmylibrary
<不支持将code>LIBADD作为全局in
Makefile.am


请注意,默认情况下,如果链接编辑器不用于满足源对象中未定义的符号,则会丢弃添加到链接线的任何库。如果你想强制链接到你的库,你必须使用
libfoo\u la\u LIBADD=-Wl,--no-as-needed-lmylibrary-Wl,--as-needed
,但这可能会使构建变得相当复杂。

既然你试图将其添加到共享对象构建中,你要寻找的是
libfoo\u la\u LIBADD=-lmylibrary
<不支持将code>LIBADD作为全局in
Makefile.am

请注意,默认情况下,如果链接编辑器不用于满足源对象中未定义的符号,则会丢弃添加到链接线的任何库。如果你想强制链接到你的库,你必须使用
libfoo_la_LIBADD=-Wl,--no-as-needed-lmylibrary-Wl,--as-needed
,但这可能会使构建复杂化很多