O Android suporta símbolos fracos?

Eu estive olhando para perguntas como:

Não é possível carregar a biblioteca: reloc_library [1285]: não é possível localizar 'rand'O aplicativo Android falha no início porque o java.lang.UnsatisfiedLinkError

Parece-me que isso poderia ser resolvido comsímbolos fracos. Ou seja, um componente nativo pode fornecer símbolos comorand mas adorná-los com__attribute__((weak)). Se o símbolo for encontrado em outra biblioteca, como o tempo de execução padrão, o símbolo fracamente vinculadonão ser usado. Por outro lado, se o símbolo estivesse faltando, a versão do componente nativo seria usada.

Estou com problemas para localizar informações nele para Android (muito ruído não relacionado durante a pesquisa).

Abri um dos meus projetos de amostra Crypto ++ / JNI e adicionei o seguinte a um arquivo CPP. oAutoSeededRandomPool é apenas um objeto gerador de número aleatório Crypto ++ (não há nada de especial ou complicado abaixo).

// CPP file

#ifdef __cplusplus
extern "C" {
#endif

int __attribute__((weak)) rand(void)
{
    int r;

    AutoSeededRandomPool& prng = GetPRNG();
    prng.GenerateBlock(&r, sizeof(r));

    return r;
}

#ifdef __cplusplus
}
#endif

Tentar compilar resulta emredefinition of int rand(). Eu também tentei o seguinte:

// CPP file

#ifdef __cplusplus
extern "C" {
#endif

int rand(void) __attribute__((weak));

int random(void)
{
   ...
}

#ifdef __cplusplus
}
#endif

E em movimentoint rand(void) __attribute__((weak)); para o arquivo H produz o mesmoredefinition of int rand().

E não recebo erros ou avisos sobre um atributo desconhecido.

Eu também vejo isso__GXX_WEAK__ está definido como1 no pré-processador, masSUPPORTS_WEAK énão definidos, seus sinais mistos (talvez um bug, semelhante aoDefinirGXX_WEAK para 0 ao usar -fno-fraco)

Não tenho certeza se estou fazendo algo errado ou experimentando algo comoatributo const e fraco com código c ++, ou alguma outra coisa.

O Android suporta símbolos fracos? Se sim, como alguém as usa.

Aqui está uma pergunta semelhante ao Stack Overflow que não tem resposta:

Comportamento diferente da função fraca de substituição na biblioteca compartilhada entre OS X e Android

Alguns detalhes do sistema:

O sistema básico é o Mac OS X 10.8.5, totalmente corrigidoEclipse 4.4.1 (Luna), totalmente corrigidoRevisão NDD do Android 10dCompilador cruzado do GCC 4.9

questionAnswers(2)

yourAnswerToTheQuestion