linux dlopen找不到静态库的符号

时间:2015-09-18 10:06:30

标签: c++ linux dynamic-linking

我有一个可执行项目,它使用一个包含静态库的共享库。然后从可执行文件中,我尝试使用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

似乎我错过了一些旗帜。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

但是,如果您在链接时使用--exclude-libs,则会删除" Static Lib 1" s符号。

希望这个问题有所帮助:How to apply gcc -fvisibility option to symbols in static libraries?