Como resolver o erro de construção quando a variável “… não foi declarada neste escopo”

0

Estou tentando instalar a última versão TauDEM (Análise do terreno usando modelos digitais de elevação) em GNU / Linux Debian para uso com o Python Processing no QGIS. As instruções de instalação podem ser vistas aqui . Depois de instalar algumas dependências (cmake, mpi-default-bin) no meu sistema, quando corri o seguinte comando:

CXX=mpicxx cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..

Eu obtive um resultado com sucesso:

-- The C compiler identification is GNU 4.9.2
-- The CXX compiler identification is GNU 4.9.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/mpicxx
-- Check for working CXX compiler: /usr/bin/mpicxx -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found MPI_C: /usr/lib/libmpi.so;/usr/lib/i386-linux-gnu/libdl.so;/usr/lib/i386-linux-gnu/libhwloc.so  
-- Found MPI_CXX: /usr/lib/libmpi_cxx.so;/usr/lib/libmpi.so;/usr/lib/i386-linux-gnu/libdl.so;/usr/lib/i386-linux-gnu/libhwloc.so  
-- Found GDAL: /usr/lib/libgdal.so  
-- Configuring done
-- Generating done
-- Build files have been written to: /home/zeito/TauDEM-5.3.8/src/build

No entanto, o comando make produziu esse tipo de erro:

‘OFTInteger64’ was not declared in this scope

como parte principal deste contexto completo:

Scanning dependencies of target aread8
[  0%] Building CXX object CMakeFiles/aread8.dir/aread8mn.cpp.o
[  1%] Building CXX object CMakeFiles/aread8.dir/aread8.cpp.o
[  2%] Building CXX object CMakeFiles/aread8.dir/commonLib.cpp.o
/home/zeito/TauDEM-5.3.8/src/commonLib.cpp: In function ‘char* getLayername(char*)’:
/home/zeito/TauDEM-5.3.8/src/commonLib.cpp:399:10: warning: address of local variable ‘layername’ returned [-Wreturn-local-addr]
     char layername[MAXLN];
          ^
[  3%] Building CXX object CMakeFiles/aread8.dir/tiffIO.cpp.o
[  4%] Building CXX object CMakeFiles/aread8.dir/ReadOutlets.cpp.o
/home/zeito/TauDEM-5.3.8/src/ReadOutlets.cpp: In function ‘int readoutlets(char*, char*, int, int, OGRSpatialReferenceH, int*, double*&, double*&, int*&)’:
/home/zeito/TauDEM-5.3.8/src/ReadOutlets.cpp:165:24: error: ‘OFTInteger64’ was not declared in this scope
     else if (idtype == OFTInteger64) {
                        ^
/home/zeito/TauDEM-5.3.8/src/ReadOutlets.cpp:166:63: error: ‘OGR_F_GetFieldAsInteger64’ was not declared in this scope
      id[nxy] = (int)OGR_F_GetFieldAsInteger64(hFeature1, idfld);
                                                               ^
CMakeFiles/aread8.dir/build.make:146: recipe for target 'CMakeFiles/aread8.dir/ReadOutlets.cpp.o' failed
make[2]: *** [CMakeFiles/aread8.dir/ReadOutlets.cpp.o] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/aread8.dir/all' failed
make[1]: *** [CMakeFiles/aread8.dir/all] Error 2
Makefile:117: recipe for target 'all' failed
make: *** [all] Error 2

Depois de procurar por um tempo, não consegui encontrar nenhuma resposta adequada. Minha pergunta é: eu perdi para instalar alguma dependência importante para obter esse tipo de erro.

    
por xunilk 22.02.2017 / 11:06

2 respostas

0

Para instalar o Taudem no GNU / Linux Debian , você pode baixar o script de instalação deste link:

taudem_ubuntu.tar.bz2

Após descompactar, mova para a pasta e execute o script (como superusuário) com o seguinte comando:

./taudem_ubuntu.sh

A execução bem-sucedida do script também exige essas dependências:

cmake, mpi-default-bin

Após a instalação, marque a caixa de seleção em Opções de processamento e, em seguida, inicie a Caixa de ferramentas de processamento (menu Processamento). Os geoalgoritmos Taudem devem estar disponíveis.

    
por 07.09.2017 / 02:15
0

O erro vem de OFTInteger64 (algum tipo de variável) e OGR_F_GetFieldAsInteger64 (uma função) sendo indefinida.

Isso provavelmente se deve a

  1. A falta de #include ou (mais provável)
  2. Uma ou várias macros de pré-processamento sendo definidas (ou não definidas) de forma que as declarações necessárias nunca sejam visíveis.

Se este programa estiver disponível pré-compilado para você, você deve usá-lo principalmente. Caso contrário, você deve entrar em contato com os autores do software.

    
por 07.09.2017 / 09:16