Linux DLPon找不到静态库的符号

linux dlopen can not find static library's symbol

本文关键字:符号 静态 DLPon 找不到 Linux      更新时间:2023-10-16

我有一个使用共享库的可执行项目,其中包括一个静态库。然后从可执行文件中,我尝试用dlopen加载另一个共享库。找到了该库,但无法从静态库中找到符号。

结构如下:

-- SHARED LIB 1
   -- (compiled with) Static Lib 1
-- EXECUTABLE
   -- SHARED LIB 1
   -- dlopen SHARED LIB 2  XX ERROR: SHARED LIB 2 cannot find symbols of Static Lib 1

SHARED LIB 1SHARED LIB 2都是由/usr/lib连接而来的。

我好像漏掉了一些标志。

我该如何解决这个问题?

使用什么标志来构建"SHARED LIB 1"?AFAIK -fvisibility不会影响静态库。

然而,如果你使用--exclude-libs链接,"Static Lib 1"的符号将被删除。

希望这个问题可以帮助:如何将gcc -fvisibility选项应用于静态库中的符号?