A biblioteca de compartilhamento de aplicativos pode ser carregada em tempo de execução?

1

Eu tenho 2 aplicativos que dizem A1, A2 compartilhou um objeto compartilhado (digamos lib1) que foi carregado no aplicativo em tempo de execução. A1 carrega lib1 usando dlopen com sucesso. Agora A2 quer carregar a biblioteca. Pode A2? (Como lib1 carregado no espaço de endereço A1). E se carga A1 usando RTLD_LOCAL. A2 pode carregar lib?

    
por Suri 09.05.2012 / 06:57

1 resposta

3

Sim, claro. Do artigo da Wikipédia sobre bibliotecas :

A shared library or shared object is a file that is intended to be shared by executable files and further shared objects files

Em outras palavras, toda a razão pela qual eles são chamados de "compartilhados" é porque mais de um executável os está usando.

Nos documentos para RTLD_LOCAL :

Symbols defined in this library are not made available to resolve references in subsequently loaded libraries.

O sinal RTLD_LOCAL para dlopen() indica que quando A1 carrega lib1 , se define, digamos, uma função f1() e, em seguida, A1 carrega lib2 , não é possível use o f1() de lib1 , porque isso foi carregado localmente.

    
por 09.05.2012 / 08:43