Como posso vincular meu programa C à biblioteca Arb?

2

Eu tentei compilar o programa Testando o critério de Li no Ubuntu. No entanto, quando eu faço gcc demo.c , recebo a saída como,

demo.c:2:19: fatal error: fmpcb.h: No such file or directory
 #include "fmpcb.h"
                   ^
compilation terminated.

Como posso compilar esse programa? Acho que preciso de algum script bash para fazer a compilação funcionar.

    
por Jaska 16.10.2014 / 21:46

2 respostas

2

O arquivo fmpcb.h não existe mais na versão mais recente do Arb. Os tipos fmprb_t e fmpcb_t no Arb 1.x foram tornados obsoletos pelos tipos arb_t e acb_t (mais eficientes) no Arb 2.x. A versão mais recente removeu completamente o tipo legado fmpcb_t.

Você deve conseguir que o código dessa postagem do blog funcione substituindo fmprb - > arb e fmpcb - > acb e possivelmente fazendo outros pequenos ajustes.

No entanto, uma solução melhor é usar o programa de exemplo Keiper-Li, que está incluído no Arb:

link

Esta é basicamente uma versão melhor do programa na postagem do blog. É mais rápido, suporta multithreading, permite que você passe argumentos na linha de comando em vez de recompilar e deve estar atualizado com a interface atual.

No diretório de origem do Arb, você pode construir e executar o programa de exemplo da seguinte forma (assumindo que o Arb já tenha sido instalado):

cd /home/user/src/arb
make examples
build/examples/keiper_li 100

Você também pode construir a biblioteca e executar programas de exemplo sem instalar o Arb, dizendo ao vinculador que ele pode encontrar o libarb.so no diretório de origem:

cd /home/user/src/arb
make
export LD_LIBRARY_PATH=/home/user/src/arb:$LD_LIBRARY_PATH
make examples
build/examples/keiper_li 100

Para documentação dos programas de exemplo do Arb, consulte: link

    
por 17.10.2014 / 02:40
1

O arquivo fmpcb.h não pode ser encontrado no caminho C include. Além disso, usar citações em vez de colchetes aqui é provavelmente uma má idéia também . Este teste que você está tentando construir provavelmente deve ser compilado ao longo com a biblioteca Arb, e é por isso que o autor está usando aspas.

Primeiramente, instale o pacote fornecendo este arquivo de cabeçalho (e, é claro, a biblioteca associada, se houver alguma). Este arquivo parece ser fornecido pela biblioteca Arb, que pode ser baixada aqui (Download ZIP) . Depois de fazer o download e extrair o arquivo, digite o diretório e digite:

$ ./configure
$ make
$ sudo make install

O script configure executará verificações no sistema para garantir que ele possa compilar e vincular a biblioteca que você está construindo. Se falhar, você terá que instalar todas as dependências necessárias antes de prosseguir. Algumas dependências podem ser fornecidas como pacotes binários (veja a documentação da sua distribuição), algumas podem não (neste caso você terá que ler suas instruções, geralmente um arquivo README ou INSTALL no arquivo da biblioteca). De acordo com a página Git do Arb, você terá algumas instalações para fazer:

Arb depends on FLINT (http://flintlib.org/), MPIR (http://mpir.org) and MPFR (http://mpfr.org). It can be built as a standalone library, or as part of FLINT as an optional extension package.

Nota: Meu sistema Ubuntu fornece pacotes binários para libflint (libflint-dev) e MPFR (libmpfr-dev). Você pode instalá-los com:

$ sudo apt-get install libflint-dev libmpfr-dev

(desde que seu gerenciador de pacotes seja apt-get , claro). O MPIR pode ser baixado aqui e instalado usando outro típico ./configure && make && sudo make install . De acordo com a documentação do MPIR , não há dependência para instalar antes de compilar a biblioteca. Ao todo:

  • Instale libflint-dev e libmpfr-dev usando apt-get ou compile você mesmo com suas respectivas dependências, se tiverem alguma.
  • Faça o download da biblioteca MPIR, compile-a (consulte o arquivo README ou o PDF da documentação que eu fiz o link acima) e instale-a.
  • Faça o download da biblioteca Arb, compile e instale-a.

Depois que a biblioteca Arb tiver sido criada e instalada em seu sistema, o arquivo fmpcb.h deverá estar disponível em /usr/local/include/fmpcb.h (exceto se sua distribuição usar outro caminho). Você também encontrará os arquivos da biblioteca em /usr/local/lib . Como o arquivo de cabeçalho está em um diretório do sistema (C include path), você terá que usar colchetes em vez de aspas no seu código:

#include <fmpcb.h>

Agora, se você quiser compilar e criar um link para essa biblioteca recém-instalada, você terá que dizer ao compilador para fazer isso:

$ gcc -I/usr/local/include -L/usr/local/lib -larb yourprogram.c -o yourprogram
$ ./yourprogram

Para mais informações sobre como instalar o Arb, dê uma olhada em esta página . Você também encontrará informações sobre a instalação do Arb como uma extensão do Flint e compilando instruções para essa situação específica.

    
por 16.10.2014 / 22:26

Tags