如何使用 Automake link 到共享库
How to link to a shared library using Automake
我的大部分开发生涯都花在了 IDE 我目前正在尝试扩展一个使用 Autoconf 和 Automake 的开源项目 C-ICAP,所以对于那些更熟悉的人来说,这可能是一个显而易见的答案这个工具集。我正在尝试向使用我们专有共享库的 ICAP 服务添加一项新服务,但无法对 Makefile.am 进行必要的更新以将我们的库添加到新的 link 操作服务。
我需要创建相当于
-lmylibrary
我尝试了以下方法,
LDADD = mylibrary
LDADD = libmylibrary.so
LIBADD = mylibrary
LIBADD = libmylibrary.so
但是当我 'make' 项目时,构建日志中没有提到 'mylibrary'。
当我尝试
LIBS = mylibrary
'mylibrary'出现在构建日志中,但是构建的.so文件中运行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
我缺少什么来启用新服务 link 到已安装的共享库?
由于您试图将其添加到 共享对象 构建中,因此您正在寻找的是 libfoo_la_LIBADD = -lmylibrary
。不支持 LIBADD
作为 Makefile.am
中的全局变量。
请注意,默认情况下,现在的 link 编辑器会丢弃任何添加到 linking 行的库,如果它们不用于满足源对象中未定义的符号。如果你想强制 linking 到你的图书馆,你必须使用 libfoo_la_LIBADD = -Wl,--no-as-needed -lmylibrary -Wl,--as-needed
,但这可能会使构建变得相当复杂。
我的大部分开发生涯都花在了 IDE 我目前正在尝试扩展一个使用 Autoconf 和 Automake 的开源项目 C-ICAP,所以对于那些更熟悉的人来说,这可能是一个显而易见的答案这个工具集。我正在尝试向使用我们专有共享库的 ICAP 服务添加一项新服务,但无法对 Makefile.am 进行必要的更新以将我们的库添加到新的 link 操作服务。
我需要创建相当于
-lmylibrary
我尝试了以下方法,
LDADD = mylibrary
LDADD = libmylibrary.so
LIBADD = mylibrary
LIBADD = libmylibrary.so
但是当我 'make' 项目时,构建日志中没有提到 'mylibrary'。 当我尝试
LIBS = mylibrary
'mylibrary'出现在构建日志中,但是构建的.so文件中运行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
我缺少什么来启用新服务 link 到已安装的共享库?
由于您试图将其添加到 共享对象 构建中,因此您正在寻找的是 libfoo_la_LIBADD = -lmylibrary
。不支持 LIBADD
作为 Makefile.am
中的全局变量。
请注意,默认情况下,现在的 link 编辑器会丢弃任何添加到 linking 行的库,如果它们不用于满足源对象中未定义的符号。如果你想强制 linking 到你的图书馆,你必须使用 libfoo_la_LIBADD = -Wl,--no-as-needed -lmylibrary -Wl,--as-needed
,但这可能会使构建变得相当复杂。