在以下网页中,
https://developer.android.com/ndk/guides/cpp-support
它指出,使用c++_static
编译两个库(libA.so,libB.so)会违反一个定义规则,其中将为不同库中的c ++函数定义多个符号。这种情况就是不确定的行为,可能会发生多个错误。
但是,我不知道在以下情况下是否也会发生这种情况:
libA.a
个链接的agsint c++_static
libB.so
并链接到c++_static
和libA.a
在这种情况下,不会发生此问题,并且将共享库与静态库链接起来是安全的,对吗?还是libc++
中的符号已嵌入libA.a
中?
答案 0 :(得分:3)
这很安全。实际上,libA.a
和libB.a
都不会与libc++
链接。静态库未针对它们的依赖关系进行链接-当链接使用这些库的可执行文件/共享对象时,将完成此操作。
libc++
中唯一会出现在这两个静态库中的代码将是标头中的代码(内联)。没问题。