链接两个用 c++_static 构建的库
Linking two libraries built with c++_static
在下面的网页中,
https://developer.android.com/ndk/guides/cpp-support
它指出用c++_static
编译的两个库(libA.so,libB.so)打破了一个定义规则,其中将为c++函数定义多个符号不同的图书馆。这种情况是未定义的行为,可能会出现多个错误。
但是,我不知道这是否也适用于以下情况:
- 我编译
libA.a
linked agsintc++_static
- 然后我针对
c++_static
和 libA.a
编译 libB.so
和 link
在这种情况下,不会出现问题,link 共享库相对于静态库是安全的,我说得对吗?或者 libc++
中的符号是否嵌入了 libA.a
?
很安全。事实上,libA.a
和 libB.a
都不会链接到 libc++
。静态库没有链接到它们的依赖项——这是在链接使用这些库的 executables/shared objects 时完成的。
libc++
中唯一会出现在这两个静态库中的代码是来自 headers 的(内联)代码。这不是问题。
在下面的网页中,
https://developer.android.com/ndk/guides/cpp-support
它指出用c++_static
编译的两个库(libA.so,libB.so)打破了一个定义规则,其中将为c++函数定义多个符号不同的图书馆。这种情况是未定义的行为,可能会出现多个错误。
但是,我不知道这是否也适用于以下情况:
- 我编译
libA.a
linked agsintc++_static
- 然后我针对
c++_static
和libA.a
编译
libB.so
和 link
在这种情况下,不会出现问题,link 共享库相对于静态库是安全的,我说得对吗?或者 libc++
中的符号是否嵌入了 libA.a
?
很安全。事实上,libA.a
和 libB.a
都不会链接到 libc++
。静态库没有链接到它们的依赖项——这是在链接使用这些库的 executables/shared objects 时完成的。
libc++
中唯一会出现在这两个静态库中的代码是来自 headers 的(内联)代码。这不是问题。