não consegue encontrar o libarchive ao compilar o prólogo YAP no OSX

1

Estou tentando compilar a última versão de desenvolvimento do Yap Prolog no OSX (Mountain Lion). A primeira vez que tentei vi esta mensagem:

##################################################################
# ERROR: Could not find library archive (-larchive).  Dropped
# library(archive). Library archive is available from
# http://code.google.com/p/libarchive/
#
# Most Unix/Linux distributions are shipped with binaries.  Make
# sure to have the development library installed.  E.g.
#
#   Debian/Ubuntu/Mint: aptitude install libarchive-dev
#   Fedora/...      yum install libarchive-devel
#   MacOS (Macports):   port install libarchive
##################################################################

Então instalei o libarchive usando as portas mac como sugerido com sudo port install libarchive . A instalação foi bem sucedida.

No entanto, depois de compilar novamente, ele continua dizendo que o libarchive está faltando. Eu tentei encontrar um arquivo libarchive no meu sistema e encontrei um alias /opt/local/lib/libarchive.dylib apontando para /opt/local/lib/libarchive.2.dylib . Apenas no caso de eu definir a variável de ambiente DYLD_LIBRARY_PATH to /opt/local/lib , mas o problema ainda está lá.

Alguém tem idéia de como posso resolver isso?

    
por Sergio 06.12.2012 / 01:03

1 resposta

1

Os pacotes -devel geralmente contêm arquivos de cabeçalho, dados do pkgconfig e similares - qualquer coisa que seja necessária para link uma aplicação na biblioteca em questão. Não sei ao certo como as portas funcionam, mas verifique /opt/local (ou /opt/local/include ) para archive.h e archive_entry.h . Sem esses arquivos, você não poderá compilar o aplicativo. Como o caminho parece não-padrão ( /opt/local/... ), você provavelmente precisará informar ao sistema de compilação, que deve procurar as bibliotecas e os cabeçalhos nesse diretório específico.

O layout genérico básico de arquivos em sistemas semelhantes a unix atualmente é regido pelo Padrão de Hierarquia do Sistema de Arquivos . As partes mais importantes são as seguintes:

PREFIX
|-- bin
|-- etc
|-- include
|-- lib
|-- sbin
'-- share
  • bin e sbin possuem binários (os programas que você executa) - é por isso que esses diretórios são geralmente mencionados na variável $PATH shell. O s em sbin usado para representar estático como no binário vinculado estaticamente, que não precisa de nenhuma vinculação dinâmica e pode ser basicamente executado "como está".

  • lib (e / ou lib64 ou mesmo lib32 ) mantêm as bibliotecas compartilhadas (e possivelmente estáticas)

  • include contém arquivos de cabeçalho que permitem vincular seu código a bibliotecas (basicamente definições de APIs).

  • etc e share são para configuração e arquivos de dados adicionais.

  • PREFIX geralmente é /usr , /usr/local , /opt ou /opt/<something> , mas você também pode criar essa estrutura em seu diretório pessoal, por exemplo.

Como dizer ao sistema de construção onde procurar binários depende de qual código o código usa. Geralmente esse tipo de informação é colocado no arquivo README ou INSTALL que acompanha a origem. Por exemplo, para GNU autotools, geralmente é na forma de --with-name=PREFIX ou --with-name-lib=PREFIX/lib --with-name-include=PREFIX/include argumentos passados para o script configure . Se isso não estiver disponível, você poderá exportar explicitamente as variáveis usadas pelo compilador e pelo vinculador:

$ export CFLAGS="-IPREFIX/include $CFLAGS"
$ export LDFLAGS="-LPREFIX/lib $LDFLAGS"

No seu caso, isso seria -I/opt/local/include e -L/opt/local/lib , respectivamente.

    
por 06.12.2012 / 03:16

Tags