Я пытаюсь установить последний выпуск TauDEM (Анализ местности с использованием цифровых моделей рельефа) в GNU / Linux Debian для использования с обработкой Python в QGIS. Инструкции по установке можно посмотреть здесь . После установки некоторых зависимостей (cmake, mpi-default-bin) в моей системе, когда я выполнил следующую команду:
CXX=mpicxx cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
Я получил успешный результат:
-- 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
Однако команда make вызвала такую ошибку :
‘OFTInteger64’ was not declared in this scope
как основная часть этого полного контекста:
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
После долгих поисков я не смог найти ни одного адекватного ответа. Мой вопрос: я пропустил установку важной зависимости для получения этого типа ошибки.
Чтобы установить Taudem в GNU/Linux Debian , вы можете скачать скрипт установки по этой ссылке:
После распаковки перейдите в эту папку и запустите скрипт (как суперпользователь )с помощью следующей команды:
./taudem_ubuntu.sh
Для успешного выполнения скрипта также требуются эти зависимости:
cmake, mpi-default-bin
После установки установите флажок в параметрах обработки, а затем запустите панель инструментов обработки (Меню обработки ). Геоалгоритмы Таудем должны быть доступны.
Ошибка возникает из-за того, чтоOFTInteger64
(какая-то переменная )иOGR_F_GetFieldAsInteger64
(функция )не определена.
Вероятно, это связано с
#include
или (более вероятно)Если эта программа доступна предварительно -скомпилированная для вашей Unix, вы должны в первую очередь использовать ее. Если нет, вам следует связаться с авторами программного обеспечения.