C++ 何时--共享库不应使用未定义的标志
假设我们有以下库依赖项lib是共享库C++ 何时--共享库不应使用未定义的标志,c++,linux,c++11,g++,shared-libraries,C++,Linux,C++11,G++,Shared Libraries,假设我们有以下库依赖项lib是共享库 lib1 lib2 lib3 lib4 | | | | -------lib5 lib6----- | | | | lib7 | | | | | | | -------exe-------------- 我决定用-fvisibility=hidden和-Wl-构建所有库,没有未定义的编译器标志
lib1 lib2 lib3 lib4
| | | |
-------lib5 lib6-----
| | | |
lib7 | | |
| | | |
-------exe--------------
我决定用-fvisibility=hidden和-Wl-构建所有库,没有未定义的编译器标志
exe需要lib4、lib5、lib6和lib7。它不直接需要lib1、lib2和lib3
lib1同时链接到lib5和lib7,但其符号对exe隐藏,因为使用了-fvisibility=hidden
lib4必须直接链接到exe,即使lib6已经链接到它,因为-fvisibility=hidden隐藏lib6使用的所有lib3符号
我的问题是,在上述任何情况下,或者在我没有想到的情况下,是否有任何理由不在共享库中使用-Wl,-no undefined标志