gpt4 book ai didi

c++ - 创建虚拟共享对象 (.so) 以依赖于其他共享对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:28 24 4
gpt4 key购买 nike

我正在尝试创建一个共享对象 (.so),通过使用 -lboost 包含一个共享对象,我隐含地包含了所有 boost 库。这是我尝试过的:

#!/bin/sh
BOOST_LIBS="-lboost_date_time-gcc43-mt -lboost_filesystem-gcc43-mt"
#truncated for brevity
g++ $BOOST_LIBS -shared -Wl,-soname,libboost.so.1 -o libboost.so.1.0
ln -si libboost.so.1.0 libboost.so.1
ln -si libboost.so.1 libboost.so

将所有 3 个创建的文件 (libboost.so libboost.so.1 libboost.so.1.0) 放在与所有 boost 库相同的目录中后,我尝试用它编译一个测试程序(这取决于 - lboost_date_time-gcc43-mt):

g++ -lboost test.cpp

这样做,我得到了与没有 -lboost 相同的未定义引用消息。 -lboost_date_time-gcc43-mt 可以工作,但这太冗长了 :) 如何让 -lboost 自动引入其他共享库?

最佳答案

你不知道。无论如何,不​​是真的。

链接器正在剥离所有符号依赖项,因为 .so 不使用它们。

也许您可以通过编写 linker script 来解决这个问题将您需要的所有符号声明为 EXTERN() 依赖项。但这意味着您需要列出所需符号的所有错位名称。根本不值得付出努力,IMO。

关于c++ - 创建虚拟共享对象 (.so) 以依赖于其他共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1430681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com