Como faço para satisfazer um 3-parte compartilhada de referência da biblioteca de status quando eu estou criando um calço biblioteca compartilhada em vez de um arquivo executável?

StackOverflow https://stackoverflow.com/questions/1072068

  •  21-08-2019
  •  | 
  •  

Pergunta

Eu sou o novo mantenedor de um sistema de Python em casa que usa um conjunto de 3-parte compartilhada bibliotecas C através de um calço biblioteca compartilhada que é criado usando uma combinação de gole e um script setup.py. Isso tem funcionado bem até recentemente.

The 3rd-party bibliotecas compartilhadas C foram atualizados para a nova funcionalidade e agora eu recebo o seguinte erro de tempo de execução, após uma compilação limpa, quando tento executar o nosso principal programa Python (que as importações do compartilhada calço biblioteca gerado):

SH-3.00 $ python ams.py

ImportError: /usr/lib/libz4lnx.so: undefined symbol: stat

Eu encontrei uma linha de discussão, de 1999, que explica que o problema é que estatísticas não está presente em libc.so.6, mas sim em libc_nonshared.a, e fornece uma solução: Fazer a ligação com a biblioteca C, adicionando lc para sua linha de comando de compilação.

http://www.redhat.com/archives/pam-list/1999-February/msg00082.html

Eu adicionei 'c' para a lista de bibliotecas no script setup.py, mas isso não muda os meus resultados. Eu suspeito que isso é porque eu estou criando um calço biblioteca compartilhada em vez de um executável.

Como posso satisfazer o 3-parte compartilhada de referência da biblioteca para stat, dado o meu ambiente de compilação?

O meu sistema de compilação é:

SH-3.00 $ lsb_release -a

LSB Version:    :core-3.0-ia32:core-3.0-noarch:graphics-3.0-ia32:graphics-3.0-noarch
Distributor ID: CentOS
Description:    CentOS release 4.6 (Final)
Release:        4.6
Codename:       Final

Minha versão gcc é:

SH-3.00 $ gcc --version

gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10)

Versão My Python é:

SH-3.00 $ python -V

Python 2.3.4
Foi útil?

Solução 2

Como se vê, enquanto se move para Centos 5.3 foi provavelmente uma coisa boa, a longo prazo, o problema real acaba por ter sido a maneira que libz4lnx foi construída sobre o DVD que eu estava originalmente usando. No processo de mudança para Centos 5.3, eu também mudou-se para uma compilação mais recente da biblioteca libz4lnx. Hoje, ao testar outra coisa, eu usei a biblioteca do DVD original e tem exatamente o mesmo erro de símbolo indefinido ao executar o programa Python. de volta para o mais novo DVD Switching (cerca de dois meses mais recente) resolveu o problema novamente.

Outras dicas

A solução foi criar um novo Centos 5.3 VM e re-construir e / ou re-instalar os componentes conforme necessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top