Construindo zsh sem admin priv: Nenhuma biblioteca de manipulação de terminal encontrada

3

Estou tentando instalar o Zsh sem privilégios de root em uma máquina Linux. Eu fiz o download do tarball de origem e corra:

./configure --prefix=<my_installation_path>

mas então eu peguei:

configure: error: "No terminal handling library was found on your system. This is probably a library called curses or ncurses. You may need to install a package called 'curses-devel' or 'ncurses-devel' on your system"

Instalando ncurses:

Como eu não sou root nesse sistema, eu baixei ncurses e o instalei manualmente (também usando ./configure --prefix=<my_installation_path> ), o que parece ter corrido bem.

Eu atualizei os seguintes caminhos:

INSTALLATION_PATH='/path/to/installation'
export PATH=$INSTALLATION_PATH/bin/:$PATH
export LD_LIBRARY_PATH=$INSTALLATION_PATH/lib:$LD_LIBRARY_PATH
export CFLAGS=-I$INSTALLATION_PATH/include

e tentei instalar o Zsh novamente, mas recebi o mesmo erro ncurses . Tanto quanto eu posso dizer, as variáveis de caminho acima apontam para os locais corretos, e eu posso verificar isso no shell. Por que o Zsh não está reconhecendo ncurses?

    
por Amelio Vazquez-Reina 07.04.2014 / 20:07

2 respostas

3

Atualização:

Seguindo a resposta de Gilles, atualizei CPPFLAGS e LDFLAGS e o problema desaparece durante configure .

No entanto, agora recebo um erro durante make :

<INSTALLATION_PATH>/lib/libncurses.a: could not read symbols: Bad value
collect2: ld returned 1 exit status

Eu também recebo um recompile with -fPIC . Eu acho que isso se refere à compilação de ncurses . Eu presumo que isso significa que eu construí ncurses como estático, e eu deveria construí-lo como dinâmico? Como eu faria isso?

Atualização 2:

Eu re-compilei ncurses novamente. Desta vez eu fiz:

  • export CXXFLAGS=" -fPIC"
  • export CFLAGS=" -fPIC"

antes de make e, em seguida, adicionou --enable-shared a ./configure para ncurses e Zsh . Isso parece ter resolvido o problema!

    
por 27.04.2014 / 19:35
3

Eu vejo pelo menos uma coisa faltando: você está passando CFLAGS=-I/path/to/installation/include , o que permite que os scripts de compilação localizem os arquivos de cabeçalho, mas você também precisa permitir que os scripts de compilação localizem a biblioteca para vincular ( libncurses.a ). Além disso, as instruções de instalação dizem para usar CPPFLAGS para os diretórios include, não CFLAGS .

export CPPFLAGS="-I$INSTALLATION_PATH/include" LDFLAGS="-L$INSTALLATION_PATH/lib"

Certifique-se de ler as mensagens de erro completas de ./configure e verifique os registros em config.log que contêm mais informações (há uma transcrição detalhada dos comandos que configure executou e sua saída).

    
por 08.04.2014 / 00:35

Tags