Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 何时--共享库不应使用未定义的标志_C++_Linux_C++11_G++_Shared Libraries - Fatal编程技术网

C++ 何时--共享库不应使用未定义的标志

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-构建所有库,没有未定义的编译器标志

假设我们有以下库依赖项lib是共享库

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标志