我有一个可执行项目,它使用一个包含静态库的共享库。然后从可执行文件中,我尝试使用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 1
和SHARED LIB 2
都来自/usr/lib
。
似乎我错过了一些旗帜。
我该如何解决这个问题?
答案 0 :(得分:0)
用什么标志来构建"共享LIB 1"? AFAIK -fvisibility不会影响静态库。
但是,如果您在链接时使用--exclude-libs
,则会删除" Static Lib 1" s符号。
希望这个问题有所帮助:How to apply gcc -fvisibility option to symbols in static libraries?