erro de faixa binária do Linux ao usar a instalação do pip: Não há espaço suficiente para cabeçalhos de programa, tente vincular com -N

3

Ao usar strip em determinados arquivos de objeto no Amazon Linux, ele cometerá erros com: $ sudo strip dfitpack.so BFD: st6qqyd2: Not enough room for program headers, try linking with -N strip:st6qqyd2[.note.gnu.build-id]: Bad value

Os arquivos objeto são criados por pip install , pacotes incluindo numpy, sklearn, pandas, xgboost, numexpr. O que estamos tentando fazer é desmontar os arquivos de código e objeto para caber dentro de um limite de 250MB do AWS Lambda.

Uma busca no google encontra referências a binutils nas listas de discussão GNU, mas a maioria das dicas é destinada a desenvolvedores construindo seu próprio código, e fazendo alterações em arquivos de cabeçalho e afins. Eu suspeito que há uma alteração de configuração de compilação que posso fazer ao executar pip install , e espero que alguém com uma melhor compreensão dos binutils possa ajudar.

Especificações: %código% $ uname -a Linux ... 4.4.5-15.26.amzn1.x86_64 #1 SMP Wed Mar 16 17:15:34 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

    
por Emmet Murphy 03.05.2016 / 15:53

1 resposta

1

Alguns pacotes pip (ou suas dependências) baixam binários em vez de baixar fontes e construir na máquina local, e pode haver problemas ao executar o strip em um binário construído em um ambiente diferente. Para baixar fontes e construir na máquina local, tente:

CFLAGS='-O0' pip install --no-binary :all: PACKAGE

Veja a documentação do pip em link

Houve uma discussão sobre este assunto no contexto da criação de pacotes Debian no link

Observe que alguns binários podem não ser construídos com sinalizadores de otimização, portanto, configurando CFLAGS para desabilitar sinalizadores de otimização, consulte: link

Observe também que pode levar muito tempo para criar todas as dependências a partir do código-fonte, portanto, se você tiver tempo para classificar quais pacotes têm problemas e quais não têm, e desejar acelerar a criação, tente alguma variação desta receita para instalar apenas alguns pacotes da fonte e com diferentes níveis de otimização:

CFLAGS='-O0' pip install --no-binary :all: PACKAGE
pip install --no-binary :all: PACKAGE
pip install PACKAGE
    
por 27.10.2016 / 08:28

Tags