O que falta é que o seu comando linker
gcc -shared -Wl,-soname,libnew.so.1 -o libnew.so.1.0 *.o -L. -lold
não copia objetos de libold.so
, mas refere-se a símbolos nesse arquivo para informar ao carregador dinâmico onde ele pode obter esses símbolos.
Normalmente, quando alguém está tentando suprimir / ocultar uma determinada biblioteca, eles começam recombinando os arquivos-objeto que foram usados para criar a biblioteca compartilhada. Você pode ser capaz de realizar isso via link parcial , mas eu não vejo uma solução (já que bibliotecas compartilhadas e objetos compartilhados não são intercambiáveis).
Leitura adicional:
- Mesclar várias bibliotecas compartilhadas .so (diz que não funcionará ...)
- O que é o link parcial no GNU Linker?
-
ld
- O vinculador GNU