linux - 永久链接到其他共享库

标签 linux shared-libraries dynamic-linking libtool

目前我正在使用 libtool 和如下语句创建一个共享库“libmylib.so”:

libtool --mode=compile g++ -Wall -fPIC -shared $(CFLAGS) $(LFLAGS) $(LSTATIC)
libtool --mode=link g++ -shared -export-symbols-regex beam_ -rpath /usr/lib -lotherlib

用它创建的库依赖于另一个(非静态)库“libotherlib.so”,这就是我使用语句“-lotherlib”的原因。

现在,当我构建一个链接到 libmylib.so 的可执行文件时,会发生一些奇怪的事情:我必须再次链接到 libotherlib.so,这意味着我也必须为此可执行文件添加一条语句“-lotherlib”。

因此,构建 libmylib.so 时 libotherlib.so 的先前链接似乎不是持久的。但我怎样才能改变这一点呢?如何构建 libmylib.so 以便它隐式地了解其对共享库 libotherlib.so 的依赖关系?

谢谢!

最佳答案

答案似乎与这个问题相同: Link a static library to a shared one during build?

很大的区别:当指定共享对象而不是静态对象进行链接时,它们不会被包含在内,但生成的共享库会记住其对这些 so 的依赖关系。

关于linux - 永久链接到其他共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14964582/

相关文章:

linux - 如何从 Perforce 存储库中删除无法检索的文件?

python + gstreamer 插件

c# - 是否可以从 .NET 核心在 linux 平台上调用共享库 (.so)?

c - 如何使用waf构建共享库?

linux - 如何处理不匹配的共享对象的 "undefined symbol"错误

linux - 如何在 apache 日志的文件名中包含服务器名称?

输出到 OpenGL(交互式)和 SVG(用于打印)的 Java 库

language-agnostic - 可以在 Mac OS X 上使用 DYLD_LIBRARY_PATH 吗?还有,它的动态库搜索算法是什么?

c++ - Hadoop Pipes 找不到共享库

php - shell 通过 PHP : Trouble adding new cron job to crontab