Instalação do P3DFFT - “libfftw3.a não encontrado”

1

Eu usei o comando

 ./configure --prefix=/usr/local/ --enable-gnu --enable-fftw --with-fftw=/home/kiran1209/Downloads/fftw-3.3.4/.libs/ LDflags="-lmpi_f90 -lmpi_f77"

(o comando está correto?)

mas depois de correr por algum tempo dá o erro

configure: error: libfftw3.a was not found in given location!

O arquivo existe, mas com extensão diferente .la . O que devo fazer sobre esse erro?

    
por Kiran Jadhav 17.05.2018 / 06:46

2 respostas

2

A primeira coisa a notar é que o argumento para --with-fftw deve ser o caminho de nível superior para os arquivos de cabeçalho e bibliotecas do FFTW3. Por exemplo, se os cabeçalhos estiverem em /usr/include e as bibliotecas estiverem em /usr/lib (o padrão, quando o pacote libfftw3-dev estiver instalado no repositório do Ubuntu), o valor deverá ser dado como --with-fftw=/usr

O problema adicional, neste caso, é que o script de configuração fornecido parece ter uma conexão física para procurar apenas nos subdiretórios lib e lib64 :

   3315         if test -e $withfftw/lib/libfftw3.a ; then
   3316                 FFTW_INC="-I$withfftw/include"
   3317 
   3318                 FFTW_LIB="$withfftw/lib/libfftw3.a"
   3319 
   3320         elif test -e $withfftw/lib64/libfftw3.a ; then
   3321                 FFTW_INC="-I$withfftw/include"
   3322 
   3323                 FFTW_LIB="$withfftw/lib64/libfftw3.a"
   3324 
   3325         else
   3326                 as_fn_error $? "libfftw3.a was not found in given location!" "$LINENO" 5
   3327         fi

O uso de um subdiretório lib64 é uma antiga convenção que pre-data a estrutura Multiarch do Debian - o local moderno para 64 As bibliotecas de bits seriam lib/x86_64-linux-gnu

may uma maneira 'limpa' de reconfigurar isso (talvez usando autoreconf ), mas eu não sei - se você não se importa em usar um quick'n ' Correção suja, então deve ser suficiente para corrigir o local de pesquisa usando sed :

sed -i.bak 's:lib64:lib/x86_64-linux-gnu:g' configure

e, em seguida, execute novamente o ./configure

    
por steeldriver 17.05.2018 / 13:05
1

Ref. @steeeldriver: sed -i.bak 's:lib64:lib/x86_64-linux-gnu:g' configure

A edição sed está OK com a primeira configuração. Mas make gera um novo arquivo configure .

Exemplo de compilação do Ubuntu 16.04 e 18.04:

cd /usr/lib/
sudo ln -s x86_64-linux-gnu/libfftw3.a

cd /usr/bin/
sudo ln -s aclocal-1.15 aclocal-1.14
sudo ln -s automake-1.15 automake-1.14

git clone https://github.com/sdsc/p3dfft.git
cd p3dfft/
./configure --enable-fftw --with-fftw=/usr && make

Sem erros, 16.04 ou 18.04.

EDIT: Usando suas novas opções, ref. make: *** [todos] Erro 2 ao instalar o P3DFFT

./configure --enable-gnu --enable-fftw --with-fftw=/usr --enable-estimate --enable-measure --enable-patient

... e usando o padrão fftw3: sem erros. Nem com p3dfft-2.7.6 ou git clone https://github.com/sdsc/p3dfft.git

Usando o fftw3 em / usr / local /: fftw3_3.3.7.orig.tar.xz link

cd fftw-3.3.7/
./configure --enable-shared --enable-static --enable-threads --enable-openmp --enable-mpi --prefix=/usr/local
make && sudo make install

E p3dfft /:

./configure --enable-gnu --enable-fftw --with-fftw=/usr/local --enable-estimate --enable-measure --enable-patient
make 

Sem erros, 16.04 ou 18.04, exceto cannot find -lmpichf90 : {libmpichf90.a, libmpichf90.so}, ou seja, se o teste do driver for executado . Não {libmpichf90.a, libmpichf90.so} nos pacotes padrão do Ubuntu.

    
por Knud Larsen 17.05.2018 / 15:45