Aplicativo tentando usar a biblioteca compartilhada errada

0

Estou tendo um problema com um programa (quartus) rodando na minha máquina Ubuntu. Estou recebendo o seguinte erro.

quartus: symbol lookup error: /usr/lib/i386-linux-gnu/libXi.so: undefined symbol: XESetWireToEventCookie

Eu tenho o arquivo libXi.so.6.0.0 correto, mas não importa onde eu o coloque, o sistema operacional não o usará a menos que eu apt-get remove libxi-dev , mas muito software usa esse libXi . O que eu quero fazer é adicionar algum tipo de exceção ao vinculador dinâmico para que quartus use o libXi .assim que ele precisa e tudo o mais ainda use o em /usr/lib/i386-linux-gnu .

Obrigado!

    
por Josh 10.10.2012 / 23:14

1 resposta

2

Você deve conseguir criar um wrapper de script de shell, conforme neste artigo , e use o truque LD_LIBRARY_PATH , para que você possa iniciar seu programa e certificar-se de que ele seja o único programa a usar a biblioteca compartilhada diferente. Não coloque em seu .bashrc , pois você só deseja que ele defina temporariamente a variável ambiental. Lançar seu programa com esse wrapper de shell script é provavelmente a maneira mais fácil de lidar com esses tipos de problemas relacionados a bibliotecas compartilhadas conflitantes.

#!/bin/bash
export LD_LIBRARY_PATH="/path/to/lib/:$LD_LIBRARY_PATH"
/path/to/my/program

A segunda linha do script define a biblioteca e a última linha lança o programa.

Como foi observado aqui , primeiro você pode executar a linha export acima terminal e, em seguida, execute

ldd /path/to/my/program 

para verificar se está carregando as bibliotecas corretas.

    
por user76204 11.10.2012 / 18:06